大きな (たとえば、4000 X 4000) numpy な float の行列を作成しました。行列のセルをフロート値で並べ替え、(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())
実際には非常に高速に動作しますが、行と列を取得できません...