检查2D矩阵中的每个元素

时间:2019-05-29 17:16:36

标签: python python-3.x numpy matrix

我在100x100中有matrix numpy,它由0's1's组成。我还有一个canvas,由100x100排列的正方形组成。此canvasmatrix相对应(第一个正方形到element[0,0],第二个正方形到[1,0]...,它从左到右逐行)。我必须检查matrix中的每个元素,如果它是0,则正方形必须是white,如果是1,则正方形必须是black 。我已经尝试了一些方法,但是没有一个起作用。如何检查矩阵的每个元素,以便确定颜色是黑色还是白色?

a=0
b=0
m=np.loadtxt("C:\\Users\\DELL\\Desktop\\preklopenie_obrazka.txt", 
skiprows=1 )
for n in range(0,99):
    if m[a][b]==0.0:
        f='white'
    else:
        f='black'
    a+=1
    b+=1

2 个答案:

答案 0 :(得分:2)

您不需要循环

# create the canvas as a copy of the original matrix
canvas=m.copy()
# convert canvas to have 'object' type so it can contain different types
canvas=canvas.astype('object')
#replace the values with the colors
canvas[canvas==0]='white'
canvas[canvas==1]='black'

画布现在将是一个numpy数组,其中m等于0的所有元素都是白色,而等于1的所有元素都是黑色。

答案 1 :(得分:0)

结帐iamchoosinganame的答案很简洁,并使用了numpy的强大功能。

为了说明如何根据您的代码正确循环,我将答案留在这里:

您的代码错误地仅检查了矩阵的主对角线。

考虑一下:在完成a=1b=1之后,都将它们都递增,因此下一次迭代是a=2b=2,然后是{{1} }和a=3 ...等等。

还-b=3末尾不包含在内,因此您希望range(0,100)的所有数字最多为99

您想两次使用range(而且,您不必自己增加循环变量):

for