我無法找到任何有關我想做什麼的問題,所以我現在問。基本上,我想在行索引取決於列索引的矩陣中切片。Numpy:依賴於列的切片
例如:
>>> import numpy as np
>>> x = np.arange(24).reshape(6,4)
>>> x
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
現在我需要的是:
array([[12, 9, 6, 3],
[16, 13, 10, 7],
[20, 17, 14, 11]])
所以我列索引的給定的(固定)集。行索引取決於它們。例如:row = col-1:col+1
有沒有一種有效的方法來做到這一點?我知道我可以對每一列中需要的條目進行迭代和切片,但對我來說這似乎效率很低。
你可以用'np.diag'和'np.rot90'或者'np.transpose'的組合來建立它。留下這作爲評論,因爲我不知道如何做你要求的確切提取。 – mtrw 2015-01-26 19:14:03
對角線解決方案:'np.array([x [:: - 1,:]。對角線(i)對於[-2,-1,0]])'中的i。它確實涉及在輸出的每一行上進行交互,因爲'np.diagonal'不需要列表。 – hpaulj 2015-01-27 01:07:16