我在选择方面遇到了一些麻烦。我想从数组b中选择数组a中描述的某些索引。
a
Out[54]:
array([[3, 2, 2],
[0, 0, 2]], dtype=int64)
b
Out[55]:
array([[[ 6., 1., 8., 9., 3., 8., 5.],
[ 6., 1., 5., 8., 2., 2., 10.],
[ 6., 1., 1., 0., 9., 3., 6.]],
[[ 11., 3., 8., 9., 3., 8., 5.],
[ 12., 7., 5., 8., 2., 2., 10.],
[ 8., 9., 1., 0., 9., 3., 6.]]])
np.choose(a,b)
ValueError: shape mismatch: objects cannot be broadcast to a single shap
在numpy的文档中说:选择数组。和所有选择必须广播为相同的形状。如果choices本身是一个数组(不建议使用),则将其最外面的维度(即对应于choices.shape [0]的维度)定义为“序列”。
我看到不建议从ndarray中进行选择,但是有一种优雅的numpy方法可以使它正常工作吗?任何建议表示赞赏。
预期输出为:
[[9,5,1], [11,12,1]]
看起来您想用来choose
从长度为7的维度b
(大小为(2,3,7))中选择值。您选择的数组a
将对此有效,但前提是序列维是最外面的维(如您所引用的)。Numpy中最外面的尺寸是第一尺寸。然后,您需要做的是滚动b
,使其具有尺寸(7,2,3)。
np.choose(a, np.rollaxis(b, 2, 0))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句