我创建了一个大的(比如 4000 X 4000)numpy 浮点矩阵。我按浮点值对矩阵的单元格进行排序,生成一个(row,col,value)
元组列表。这是我的代码(简化):
def cells(matrix):
shape = np.shape(matrix)
for row in range(shape[0]):
for col in range(shape[1]):
yield (row, col, matrix[row,col])
# create a random matrix
matrix = np.random.randint(100, size=(4000,4000))
# sort the cells by value
sorted_cells = sorted(cells(matrix), key=lambda x: x[2])
我知道逐个单元格的产量是低效的,但我不知道如何(row, col, value)
使用纯 numpy 迭代矩阵的元组?也许这才是真正的问题!
我当前方法的问题是我的计算机在排序步骤中完全死机。
如果我这样做,这不是问题:sorted(matrix.flatten())
它工作正常,实际上非常快,但是我没有得到行和列......