элемент - numpy матрицы




Зацикливание через каждый элемент в массиве numpy? (2)

Я пытаюсь получить доступ к каждому элементу в двумерном массиве numpy.

Я привык к чему-то подобному в Python [[...], [...], [...]]

for row in data:
    for col in data:
       print(data[row][col])

но теперь у меня есть data_array = np.array(features)

Как я могу проходить через нее так же?


Если вы хотите получить доступ к элементу в двумерных массивах numpy, вы можете использовать функции [row_index, column_index]. Если вы хотите итерации через массив numpy, вы можете просто изменить свой скрипт на

for row in data:

    for col in data:

       print(data[row, col])

Создайте небольшой массив 2d и вложенный список из него:

In [241]: A=np.arange(6).reshape(2,3)
In [242]: alist= A.tolist()
In [243]: alist
Out[243]: [[0, 1, 2], [3, 4, 5]]

Один из способов повторения в списке:

In [244]: for row in alist:
     ...:     for item in row:
     ...:         print(item)
     ...:         
0
1
2
3
4
5

работает одинаково для массива

In [245]: for row in A:
     ...:     for item in row:
     ...:         print(item)
     ...:         
0
1
2
3
4
5

Теперь нет ничего хорошего, если вы хотите изменить элементы. Но для сырой итерации по всем элементам это работает.

С массивом, с которым я могу легко справиться, это был 1d

In [246]: [i for i in A.flat]
Out[246]: [0, 1, 2, 3, 4, 5]

Я мог бы также перебирать вложенные индексы

In [247]: [A[i,j] for i in range(A.shape[0]) for j in range(A.shape[1])]
Out[247]: [0, 1, 2, 3, 4, 5]

В общем, лучше работать с массивами без итерации. Я приводил эти примеры итераций для устранения некоторой путаницы.







multidimensional-array