#python #arrays #numpy
#python #массивы #numpy
Вопрос:
Если у меня есть numpy-массив
[[ 0 -2 -4 -6]
[-2 -3 -5 -7]
[-4 0 -2 -4]
[-6 -2 -3 -5]]
Как мне посетить каждый из элементов этого numpy-массива, известного как mymatrix, строка за строкой так, чтобы mymatrix[x][y]=the element that is traversed
, например, я получал 0,-2,-4,-6,-2,-3,-5,-7,-4,0,-2,-4,-6,-2
и так далее, если массив пройден через двойной цикл for
Редактировать:
Когда я следую методу double for loop, описанному ниже, вот что я получаю
for row in range(scorematrix.shape[0]):
for col in range(scorematrix.shape[1]):
final=[]
if row==0 and col==0:
scorematrix[row][col]=0
continue
elif row==0:
scorematrix[row][col]=col (col*-3)
continue
elif col==0:
scorematrix[row][col]=row (row*-3)
continue
elif seq1[row]=="A" and seq2[col]=="A":
result=4
elif seq1[row]=="C" and seq2[col]=="C":
result=3
elif seq1[row]=="G" and seq2[col]=="G":
result=2
elif seq1[row]=="T" and seq2[col]=="T":
result=1
elif seq1[row]!=seq2[col]:
result=-3
print(scorematrix)
firstelement=result scorematrix[row-1,col-1]
final.append(firstelement)
secondelement=scorematrix[row-1,col]-2
final.append(secondelement)
thirdelement=scorematrix[row,col-1]-2
final.append(thirdelement)
themax=max(final)
index=[k for k, j in enumerate(final) if j == themax]
listofc.append(index)
scorematrix[row][col]=themax
основные биты, необходимые для моего вопроса, — это первые две строки и последняя строка, остальное — просто некоторые вычисления.
Матрица, которую я хочу вывести, это [[ 0 -2 -4 -6]
[-2 -3 -5 -7]
[-4 0 -2 -4]
[-6 -2 -3 -5]]
Но матрица, которую я получаю, является
[[ 0 -2 -4 -6]
Если вы игнорируете строки и столбцы с помощью
[-2 -3 0 -2]
[-4 -5 -2 -3]
[-6 -7 -4 -5]] 0,-2,-4,-6
, вы можете увидеть, что то, что ДОЛЖНО быть первой строкой, было введено в качестве первого столбца и так далее.
Как мне это исправить?
Комментарии:
1.
mymatrix[x]
не работает?2. Возможно, вы ищете
for element in mymatrix.ravel()
.3. Что вы собираетесь делать с каждым «посещением»? Просто напечатать это? изменить это?
A.ravel()
илиfor item in A.ravel(): print(item)
проще, чем двойной цикл. Не быстрее, просто проще.4. Спасибо за ответы, я обновил свой вопрос, чтобы показать вам, о чем именно я прошу
5. Что-нибудь изменится, если вы используете
scorematrix[row, col] = themax
вместо этого? Отдельная подписка может делать неожиданные вещи, когда вы используете фрагменты, но я понятия не имею, почему это здесь не сработает.