Как мне перемещаться по numpy-матрице строка за строкой?

#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 вместо этого? Отдельная подписка может делать неожиданные вещи, когда вы используете фрагменты, но я понятия не имею, почему это здесь не сработает.