【发布时间】:2019-04-15 13:30:44
【问题描述】:
有一个形状为(2,6, 60)的数组A,是否可以根据形状为(6,)的二进制数组B对其进行索引?
6 和 60 非常随意,它们只是我希望访问的 2D 数据。
我要做的基本事情是计算 2D 数据的两个变体(在本例中为 (6,60)),然后有效地选择总和最低的那些 - 这就是二进制 (6,) 数组的位置来自。
示例:对于B = [1,0,1,0,1,0],我希望收到的内容等于堆叠
A[1,0,:]
A[0,1,:]
A[1,2,:]
A[0,3,:]
A[1,4,:]
A[0,5,:]
但我想通过直接索引而不是 for 循环来实现。
我尝试过A[B], A[:,B,:], A[B,:,:] A[:,:,B],但没有一个提供所需的 (6,60) 矩阵。
import numpy as np
A = np.array([[4, 4, 4, 4, 4, 4], [1, 1, 1, 1, 1, 1]])
A = np.atleast_3d(A)
A = np.tile(A, (1,1,60)
B = np.array([1, 0, 1, 0, 1, 0])
A[B]
预期结果是一个 (6,60) 数组,其中包含上述 A 中的元素,接收到的是 (2,6,60) 或 (6,6,60)。
提前谢谢你, 莱纳斯
【问题讨论】:
标签: python arrays numpy indexing