【发布时间】:2019-05-08 04:42:31
【问题描述】:
我想在 Python 中修改子数组的值,但它并没有按照我想要的方式工作。这是一个例子,首先让我们考虑 numpy 数组:
A = np.reshape(np.arange(25),(5,5))
和
B = np.ones((2,3))
如果我们检查 A 的值,我们会得到:
>>> A
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
我想在 A 中替换子数组的值
A[:,[1,3,4]][[1,3],:]
根据 B 的值。所以我正在做的事情如下:
A[:,[1,3,4]][[1,3],:] = B
我想得到:
>>> A
array([[ 0, 1, 2, 3, 4],
[ 5, 1, 7, 1, 1],
[10, 11, 12, 13, 14],
[15, 1, 17, 1, 1],
[20, 21, 22, 23, 24]])
但是 A 的值不会随着这种方法而改变。当然,我可以使用循环逐个元素地执行此操作,但问题是我想使用 16000*16000 矩阵执行此操作,因此我正在寻找一种不使用循环的方法。你能帮帮我吗?
任何帮助将不胜感激:)
【问题讨论】:
-
你不需要定义“B”只需使用
A[:,[1,3,4]][[1,3],:] = 1 -
感谢 Attila Bognar 的回复,但这是一样的,我的意思是它不会改变 A 的值。