[英]Slice a 3D numpy array by a list of indices
我看不出要弄清楚如何切片数组,以便获得第三维的关注索引。 这是一个示例3D numpy数组。
data = np.arange(60).reshape(5,4,3)
print data
[[[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]]
[[12 13 14] [15 16 17] [18 19 20] [21 22 23]]
[[24 25 26] [27 28 29] [30 31 32] [33 34 35]]
[[36 37 38] [39 40 41] [42 43 44] [45 46 47]]
[[48 49 50] [51 52 53] [54 55 56] [57 58 59]]]
现在,这里是我要从第三维获取的索引。
indexs_of_interest = np.random.randint(3,size = 5)打印indexs_of_interest
[0 2 2 2 0]
所以基本上我想要价值观
[[[ 0] [ 3] [ 6] [ 9]]
[[14] [17] [20] [23]]
[[26] [29] [32] [35]]
[[38] [41] [44] [47]]
[[48] [51] [54] [57]]]
有什么办法可以做到这一点? 当我尝试直接索引数组时,它会广播维度,而不是向我提供数据的子集。
我们可以使用advanced-indexing
来抓取它们 ,直到第三个暗点-
data[np.arange(len(indices_of_interest)),:, indices_of_interest]
样品运行-
In [65]: data = np.arange(60).reshape(5,4,3)
In [66]: indices_of_interest = [0,2,2,2,0]
In [67]: data[np.arange(len(indices_of_interest)),:, indices_of_interest]
Out[67]:
array([[ 0, 3, 6, 9],
[14, 17, 20, 23],
[26, 29, 32, 35],
[38, 41, 44, 47],
[48, 51, 54, 57]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.