3
我正嘗試使用argsort從矩陣中的每一行獲取前2個值。索引工作正常,因爲argsort正在返回正確的值。但是,當我將argsort結果作爲索引時,它會返回3維結果。2D numpy argsort索引在原始矩陣中使用時返回3D
例如:
test_mat = np.matrix([[0 for i in range(5)] for j in range(5)])
for i in range(5):
for j in range(5):
test_mat[i, j] = i * j
test_mat[range(2,3)] = test_mat[range(2,3)] * -1
last_two = range(-1, -3, -1)
index = np.argsort(test_mat, axis=1)
index = index[:, last_k]
這給:
index.shape
Out[402]: (5L, 5L)
test_mat[index].shape
Out[403]: (5L, 5L, 5L)
Python是新的給我,我發現索引,甚至閱讀的各種陣列手冊後,在一般非常混亂。我花更多時間試圖從對象中獲得正確的值,而不是實際解決問題。我歡迎有關正確瞭解正在發生的事情的任何提示。謝謝。
感謝您的回答,它似乎有效,但它對我來說有點直觀,因爲我認爲argsort應該返回一個可以用作索引的索引,但現在我們需要兩個新概念 - 行偏移量和採取。我需要了解這些實際上在做什麼,然後我會更充分地發表評論。 Re:切片,我需要兩個相同大小的矩陣的索引。再次感謝! – felix000