我无法找到任何有关我想做什么的问题,所以我现在问。基本上,我想在行索引取决于列索引的矩阵中切片。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