无法修改numpy二维数组

时间:2018-08-10 09:21:23

标签: python numpy

我正在尝试根据boolarr数组的内容来修改reducedMatrix numpy数组。 如果boolarr不是0或-1,应该将reducedMatrix的布尔值更改为False。

reducedMatrix = np.load(reducedweightmatrix)

boolarr = np.ones(shape=(len(reducedMatrix),len(reducedMatrix)),dtype="bool")

for y,yelement in enumerate(reducedMatrix):
    for x,xelement in enumerate(yelement):
        if(xelement != -1 and xelement != 0):
            print(x)
            print(y)
            print("\n")
            boolarr[y,x] == False

print(reducedMatrix)
print(boolarr)

日志继续显示以下内容:

[[-1  5  5  0  0]
 [ 5 -1  0  0  0]
 [ 5  0 -1  0  5]
 [ 0  0  0 -1  0]
 [ 0  0  5  0 -1]]
[[ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]
 [ True  True  True  True  True]]

我在做什么错了?

2 个答案:

答案 0 :(得分:1)

您需要更改

boolarr[y,x] == False

进入

boolarr[y,x] = False

答案 1 :(得分:1)

只需在一条矢量化行中创建boolarray,就无需逐个编辑boolarray = (reducedMatrix == 0) | (reducedMatrix == -1) # array([[ True, False, False, True, True], # [False, True, True, True, True], # [False, True, True, True, False], # [ True, True, True, True, True], # [ True, True, False, True, True]])

0