首页 > 解决方案 > Numpy:改变一个数组的元素值,有点奇怪

问题描述

我创建了三个数组 com、mask、r1,并且我希望更改 r1[mask] 中的元素值以进行以下测试:

com = np.ones([8,8],dtype = np.int)              
np.fill_diagonal(com, 0)
com[0:3,0:3] = 0

replace_rate = 0.1
mask = np.random.choice([0,1],size=(com.shape),p=((1-replace_rate),replace_rate)).astype(np.bool)  

r1 = np.random.rand(*com.shape)*np.max(com) 
r1[mask][1]= 0.3

print(r1[mask][1])
print(type(r1[mask]))
print(r1[mask],r1.dtype,'r1mask' )

我的问题是为什么我不能像往常一样为 r1[mask] 的元素赋值我得到 r1[mask] 的结果,例如:

[0.84356101 0.61487372 0.94783953 0.07359154] float64  r1mask

其中第二个元素不会更改为 0.3。我怎样才能改变价值?先感谢您

标签: python-3.xnumpy

解决方案


推荐阅读