如何为每一行广播不同的片段?

时间:2019-04-21 02:30:32

标签: python-3.x slice numpy-broadcasting numpy-slicing

我正在对一个numpy二维数组进行操作,并试图找到某种方法来访问每行不同的切片。最好以这样的方式利用numpy广播,以使我像下面那样传递切片数组:

A = np.array([[1,2,3,4,5],[1,4,9,16,25],[1,8,27,64,125]])
A[[2:,3:,4:]]
>>> array([[3,4,5],[16,25],[125]])

我知道我上面写的是伪造的,但是您明白了。我想传入一个数组t = [2,3,4],以便该数组的每个成员(用t_i表示)都产生t_i :(该成员和后面的冒号)。

谢谢

1 个答案:

答案 0 :(得分:1)

广播可能无法满足您的需求。但是列表理解可能会起作用:

np.array([a[i+2:] for i,a in enumerate(A)])
#array([array([3, 4, 5]), array([16, 25]), array([125])], dtype=object)