我的阵列是从图像whick象下面这样:为什么我不能改变numpy的数组?
[[[ 66.17041352 32.64576397 20.96214396]
[ 66.17041352 32.64576397 20.96214396]
[ 65.96318838 32.36065031 16.13857633]
...,
[ 69.04849876 28.06324166 26.57747623]
[ 63.7269604 32.96378326 25.94336956]
[ 53.96807994 39.33219382 23.9025511 ]]
...,
[[ 18.55833403 34.4104455 -9.75497344]
[ 18.55833403 34.4104455 -9.75497344]
[ 21.45103128 32.77919479 -3.84284208]
...,
[ 44.64859327 41.89617915 14.25196745]
[ 43.40291913 43.25109885 17.43372679]
[ 43.30009306 47.94315449 15.59464532]]
[[ 18.64249436 31.63054472 -7.56023249]
[ 18.64249436 31.63054472 -7.56023249]
[ 23.23099091 32.284216 -3.86411699]
...,
[ 44.98536772 45.0246078 17.92556564]
[ 45.53417128 45.42120428 17.50264622]
[ 46.7226915 45.42428651 19.21054283]]]
我想数组更改为零这样的:
[[[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]
...,
[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]]
...,
[[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]
...,
[[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]
...,
[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]]]
我知道如何做到这一点,但我只是想知道为什么我的源代码不起作用。打印显示没有任何变化。
for row in image_arr:
for col in row:
col = [0,0,0]
print image_arr
这是第一个明确表示'col = [0,0,0]'只是_name重新绑定_--这是关键问题的答案。 numpy不会在这里返回拷贝,而是可以被突变的原始对象的视图(比如'col [:] = 0')只是关于_numpy_的一个事实; “col = [0,0,0]”永远不会起作用的事实是关于_Python_的一个基本事实。 – DSM
或者更少的字符,'arr [...] = 0'甚至'arr [()] = 0' – Eric