关注这项任务,我的头脑没有按预期行事:
a = np.arange(24).reshape(4,3,2)
b = np.array([-1,-2,-3])
c = np.array([1])
a[...,c] = b
=> ValueError: shape mismatch: value array of shape (3,) could not be broadcast to indexing result of shape (1,4,3)
我期待
我在这里遗漏了什么吗?
答案 0 :(得分:2)
这应该有效。使用[:, None]
建立索引会更改数组的方向。
a[...,c] = b[:, None]
答案 1 :(得分:1)
你的第一个期望是真的。如果您尝试a[...,c].shape
则为4,3,1。不确定为什么错误说1,3,4。
对于第二个期望,您将大小为3的向量(1D)分配给3-D矩阵(4,3,1)。要做到这一点,你需要使矢量b
2-D形状(3,1)。这可以做到:
a[...,c] = b[None].T