Numpy 从三维nd阵列中选择行
情况如下:如果我有一个形状为(64100300)的numpy数组,并且我想基于形状为64的索引数组将其转换为(641300),我应该怎么做?说我们有Numpy 从三维nd阵列中选择行,numpy,Numpy,情况如下:如果我有一个形状为(64100300)的numpy数组,并且我想基于形状为64的索引数组将其转换为(641300),我应该怎么做?说我们有 a=np.random.randn(64, 100, 300) indices = np.random.randint(low=0, high=100, size=64) 我现在有 a[:, indices, :] 这是行不通的。返回数组的形状为(64、64、300),因为它试图从每个批次中选择一系列值。如上面的注释所示: a[np.arang
a=np.random.randn(64, 100, 300)
indices = np.random.randint(low=0, high=100, size=64)
我现在有
a[:, indices, :]
这是行不通的。返回数组的形状为(64、64、300),因为它试图从每个批次中选择一系列值。如上面的注释所示:
a[np.arange(indices.size),indices,None]
或者同样但更具可读性:
a[np.arange(indices.size),indices][:,None,:]
使用[code>a[np.arange(len(index)),index]。或者
a[np.arange(len(index)),index,None]
为那个单子dim。非常感谢!它起作用了。但我只是好奇为什么让第三个dim变为None
会有帮助?None/np.newaxis只是添加了一个被高级索引丢失的新轴。这是一个标准的numpy
问题,实际上与机器学习
无关-请不要垃圾邮件(删除)。