У меня есть 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
Вам не нужна петля
# 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'
Canvas теперь будет массивом numpy с белым для всех элементов m, равным 0, и черным для всех элементов, равных 1.
Используйте np.where(m, 'black', 'white')
checkout ответ я выбираю имя, который краток и использует потрясающие возможности numpy
.
Я оставляю свой ответ здесь только для того, чтобы показать, как правильно выполнить цикл на основе вашего кода:
ваш код ошибочно проверяет только главную диагональ матрицы.
подумайте об этом: после того, как вы закончите с a=1
и b=1
, вы увеличите оба, поэтому следующая итерация будет a=2
и b=2
, затем a=3
и b=3
... и т. д.
также - range
не включает в конце, поэтому вы хотите, чтобы диапазон (0,100) получил все числа до 99
вы хотите использовать for
дважды (также вам не нужно самостоятельно увеличивать переменную цикла):
m=np.loadtxt("C:\\Users\\DELL\\Desktop\\preklopenie_obrazka.txt", skiprows=1 )
for a in range(0,100):
for b in range(0,100):
if m[a][b]==0.0:
f='white'
else:
f='black'
print(f) # CHANGE: just use f in whatever way you need
вы должны использовать два цикла для доступа ко всем элементам в 2D-матрице