我有一个m X 3
矩阵和一个长度为m的数组,.
我想执行以下操作
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15]])
b = np.array([1, 2, 1, 3, 3])
me = np.mean(a[np.where(b==1)][:, 0])
a[np.where(b==1)][:, 0] = me
问题是
a[np.where(b==1)][:, 0]
返回[1, 7]
而不是[4, 4]
。
您正在将索引数组与切片组合:[np.where(b==1)]
是索引数组,[:, 0]
是切片。返回复制的方式,因此您在复制上设置了新值。您应该改为:
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15]])
b = np.array([1, 2, 1, 3, 3])
me = np.mean(a[np.where(b==1)][:, 0])
a[np.where(b==1), 0] = me
另请参阅https://docs.scipy.org/doc/numpy/user/basics.indexing.html,以将索引数组与切片组合在一起。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句