как зациклить одну ось массива, возвращая внутренние значения вместо значений - PullRequest
0 голосов
/ 15 марта 2019

У меня есть несколько массивов данных, собранных в один массив.Я хочу зациклить его и выполнять операции над каждым из внутренних массивов.Что было бы правильным способом сделать это в Numpy

import numpy as np

a = np.arange(9)
a = a.reshape(3,3)
for val in np.nditer(a):
    print(val)

, и это дает:

0
1
2
3
4
5
6
7
8

Но я хочу (что-то вроде):

array([0 1 2])
array([3 4 5])
array([6 7 8])

Я просматривал эту страницу: https://docs.scipy.org/doc/numpy-1.15.0/reference/arrays.nditer.html, но до сих пор не нашел ответа.Я также знаю, что могу сделать это с помощью простого цикла for, но я предполагаю, что есть более правильный путь.Буду признателен за любую помощь, спасибо.

Ответы [ 3 ]

0 голосов
/ 15 марта 2019

На самом деле, когда вы используете reshape, он возвращает массив списков, а не массивов.

Если вы хотите получить каждый отдельный список, вы можете просто использовать

a = np.arange(9)
a = a.reshape(3,3)
for val in a:
    print(val)
0 голосов
/ 15 марта 2019

Почему бы просто не зацикливаться на массиве, где вы получаете отдельные строки в цикле for

import numpy as np

a = np.arange(9)
a = a.reshape(3,3)

for val in a:
    print(val)

# [0 1 2]
# [3 4 5]
# [6 7 8]   
0 голосов
/ 15 марта 2019

Вы можете использовать apply_along_axis, но это зависит от вашей конечной цели / результата.Вот простой пример, показывающий это.

a

array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

np.apply_along_axis(lambda x: x + 1, 0, a)

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...