【发布时间】:2015-04-19 15:16:18
【问题描述】:
当我在一个 numpy 多维数组中进行索引时,我遇到了一个奇怪的问题。所以,我有一个形状数组 (4, 882)。我有另一个称为形状匹配的数组 (276, 2)。这个匹配数组保存了我原来的多维数组中有效条目的索引。我想做的是选择前 2 行和匹配数组中索引的所有列。所以,我做了如下的事情:
import numpy as np
k = get_array() # This has shape (4, 882)
m = get_match() # This has shape (276, 2)
s = k[[1, 0], m[:, 0]]
这会引发错误:
ValueError: shape mismatch: objects cannot be broadcast to a single shape
但是,当我这样做时:
s = k[[1, 0], :][:, m[:, 0]]
这很好用。所以,这实际上是先选择行的子集,然后选择列,但我不确定为什么我的第一次尝试是错误的。另外,做:
s = k[[1, 0], :]
当然可以。
【问题讨论】:
标签: python numpy multidimensional-array indexing