我在100x100
中有matrix
numpy
,它由0's
和1's
组成。我还有一个canvas
,由100x100
排列的正方形组成。此canvas
与matrix
相对应(第一个正方形到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
答案 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=1
和b=1
之后,都将它们都递增,因此下一次迭代是a=2
和b=2
,然后是{{1} }和a=3
...等等。
还-b=3
末尾不包含在内,因此您希望range(0,100)的所有数字最多为99
您想两次使用range
(而且,您不必自己增加循环变量):
for