1
我試圖通過插入粘貼另一個2-dim數組來更改二維numpy數組內的塊。下面的示例給了我意想不到的行爲:將值分配給numpy數組中的塊
import numpy as np
M=np.ones((4,4))
print(M)
S=[0,1]
print('to be set to zero: ',M[S,:][:,S])
M[S,:][:,S]=np.zeros((2,2))
print('after setting to zero: ',M)
我期望M的左上角變爲零。但我得到
[[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]]
to be set to zero: [[ 1. 1.]
[ 1. 1.]]
after setting to zero: [[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]]
看來,我可以提取左上方的塊,但不寫入它。我得到預期的行爲,如果我更換線
M[S,:][:,S]=np.zeros((2,2))
與
M[0:2,:][:,0:2]=np.zeros((2,2))
我在做什麼錯? 謝謝
你在副本上設置的條目。 – user2357112
'M [S,:]'創建一個副本; 'M [0:2,:]'一種看法。 – hpaulj