цикл для извлечения каждого массива в массиве Python - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть массив массивов

a = np.array([[11, 12, 13, 14],
           [15, 16, 17, 18],
           [19, 20, 21, 22]])

Я хочу сделать цикл для извлечения каждой строки, чтобы окончательный результат был

a(1) = [11, 12, 13, 14]
a(2) = [15, 16, 17, 18]
a(3) = [19, 20, 21, 22]

затем преобразовать каждый a (i) в массив 2x2 fortran

a(1) = np.array([[11, 13],
                 [12, 14])
a(2) = np.array([[15, 17],
                 [16, 18])
a(3) = np.array([[19, 21],
                 [20, 22])

Ответы [ 6 ]

0 голосов
/ 02 сентября 2018

Можно использовать zip со сдвигом для каждого списка. карта необходима для превращения сжатых кортежей в списки.

>>>[list(map(list,zip(l,l[2:]))) for l in a]   

[[[11, 13], [12, 14]], [[15, 17], [16, 18]], [[19, 21], [20, 22]]]
0 голосов
/ 02 сентября 2018

Просто сделайте следующее:

for ele in a:
    print(ele.reshape(2,2))

Или вы можете использовать:

for i in range(len(a)):
    print(a[i].reshape(2,2))

Также, в приведенном выше, пожалуйста, помните, что (i) является недействительным. Вам нужно написать [я].

0 голосов
/ 02 сентября 2018

Вы можете напрямую выполнить итерацию, используя цикл for.

import numpy as np

a = np.array([[11, 12, 13, 14],
           [15, 16, 17, 18],
           [19, 20, 21, 22]])

b = list()
for i in range(a.shape[0]):
    b.append(a[i].reshape(2,2))
for itr in b:
    print(b[i])
0 голосов
/ 02 сентября 2018
>>> import numpy as np
>>> a = np.array([[11, 12, 13, 14],
           [15, 16, 17, 18],
           [19, 20, 21, 22]])
>>> a[0].reshape(2,2)
array([[11, 12],
       [13, 14]])
>>> a[1].reshape(2,2)
array([[15, 16],
       [17, 18]])
>>> a[2].reshape(2,2)
array([[19, 20],
       [21, 22]])
0 голосов
/ 02 сентября 2018

Вот, пожалуйста:

In [4]: a
Out[4]: 
array([[11, 12, 13, 14],
       [15, 16, 17, 18],
       [19, 20, 21, 22]])

In [5]: a[0]
Out[5]: array([11, 12, 13, 14])

In [6]: a[1]
Out[6]: array([15, 16, 17, 18])

In [7]: a[2]
Out[7]: array([19, 20, 21, 22])

In [9]: a[0].reshape(2,2).T
Out[9]: 
array([[11, 13],
       [12, 14]])

In [13]: for i in a:
    ...:     print(i.reshape(2,2).T)
    ...:     
    ...:     
[[11 13]
 [12 14]]
[[15 17]
 [16 18]]
[[19 21]
 [20 22]]
0 голосов
/ 02 сентября 2018

Использование списка понимания. Обратите внимание, что a(1) не способ доступа к элементам в Python. Также индекс начинается с 0. Теперь вы можете напечатать a[0], a[1] и т. Д.

a=[i.reshape((2,2)).T for i in a] # Update after your comment

выход

[array([[11, 13],
    [12, 14]]), array([[15, 17],
    [16, 18]]), array([[19, 21],
    [20, 22]])]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...