Python – Sort Matrix by K Sized Subarray Maximum Sum

When working with matrices, sometimes we need to sort rows based on the maximum sum of K-sized subarrays within each row. This technique is useful in data analysis and algorithm problems where we want to prioritize rows based on their highest consecutive sum.

Understanding the Problem

For each row in the matrix, we need to:

  • Find all possible K-sized subarrays

  • Calculate the sum of each subarray

  • Take the maximum sum as the sorting key

Example

Let's implement a function to sort a matrix by K-sized subarray maximum sum ?

def sort_matrix_K(row):
    """Find maximum sum of K-sized subarray in a row"""
    return max(sum(row[index: index + K]) for index in range(len(row) - K + 1))

# Define the matrix and K value
matrix = [[51, 23, 4, 24, 1], [45, 6, 26, 36, 5], [56, 16, 6, 36, 8], [5, 4, 36, 26, 26]]
K = 3

print("Original matrix:")
for row in matrix:
    print(row)

print(f"\nK value: {K}")

# Sort matrix by maximum K-sized subarray sum
matrix.sort(key=sort_matrix_K)

print("\nMatrix sorted by maximum K-sized subarray sum:")
for row in matrix:
    print(row)
Original matrix:
[51, 23, 4, 24, 1]
[45, 6, 26, 36, 5]
[56, 16, 6, 36, 8]
[5, 4, 36, 26, 26]

K value: 3

Matrix sorted by maximum K-sized subarray sum:
[51, 23, 4, 24, 1]
[45, 6, 26, 36, 5]
[5, 4, 36, 26, 26]
[56, 16, 6, 36, 8]

How It Works

The sorting function calculates maximum sums for each row:

def demonstrate_calculation():
    matrix = [[51, 23, 4, 24, 1], [45, 6, 26, 36, 5], [56, 16, 6, 36, 8]]
    K = 3
    
    for i, row in enumerate(matrix):
        subarrays = []
        max_sum = 0
        
        for index in range(len(row) - K + 1):
            subarray = row[index: index + K]
            subarray_sum = sum(subarray)
            subarrays.append((subarray, subarray_sum))
            max_sum = max(max_sum, subarray_sum)
        
        print(f"Row {i + 1}: {row}")
        print(f"K-sized subarrays and their sums:")
        for subarray, subarray_sum in subarrays:
            print(f"  {subarray} ? sum = {subarray_sum}")
        print(f"Maximum sum: {max_sum}\n")

demonstrate_calculation()
Row 1: [51, 23, 4, 24, 1]
K-sized subarrays and their sums:
  [51, 23, 4] ? sum = 78
  [23, 4, 24] ? sum = 51
  [4, 24, 1] ? sum = 29
Maximum sum: 78

Row 2: [45, 6, 26, 36, 5]
K-sized subarrays and their sums:
  [45, 6, 26] ? sum = 77
  [6, 26, 36] ? sum = 68
  [26, 36, 5] ? sum = 67
Maximum sum: 77

Row 3: [56, 16, 6, 36, 8]
K-sized subarrays and their sums:
  [56, 16, 6] ? sum = 78
  [16, 6, 36] ? sum = 58
  [6, 36, 8] ? sum = 50
Maximum sum: 78

Alternative Implementation

Here's a more explicit version that shows the step-by-step process ?

def sort_matrix_verbose(matrix, k):
    """Sort matrix with detailed information about the process"""
    
    def get_max_subarray_sum(row, k):
        max_sum = float('-inf')
        for i in range(len(row) - k + 1):
            current_sum = sum(row[i:i + k])
            max_sum = max(max_sum, current_sum)
        return max_sum
    
    # Create list of (row, max_sum) pairs
    row_info = []
    for row in matrix:
        max_sum = get_max_subarray_sum(row, k)
        row_info.append((row, max_sum))
    
    # Sort by maximum sum
    row_info.sort(key=lambda x: x[1])
    
    # Return sorted matrix
    return [row for row, _ in row_info]

# Test the function
matrix = [[10, 5, 3, 8], [2, 9, 7, 1], [4, 6, 8, 2]]
k = 2

print("Original matrix:")
for row in matrix:
    print(row)

sorted_matrix = sort_matrix_verbose(matrix, k)

print(f"\nSorted by maximum {k}-sized subarray sum:")
for row in sorted_matrix:
    print(row)
Original matrix:
[10, 5, 3, 8]
[2, 9, 7, 1]
[4, 6, 8, 2]

Sorted by maximum 2-sized subarray sum:
[4, 6, 8, 2]
[10, 5, 3, 8]
[2, 9, 7, 1]

Conclusion

This technique sorts matrix rows based on their maximum K-sized consecutive sum, useful for prioritizing data based on peak performance windows. The key insight is using Python's sort() method with a custom key function that calculates the maximum subarray sum for each row.

Updated on: 2026-03-26T02:45:55+05:30

281 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements