Как сделать столбцы из массивов в массиве - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь выяснить, как сделать столбцы из массивов в массиве. Я пытаюсь сохранить эти столбцы в текстовом файле.

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

   a = [[array([ 2.05096059,  3.65564871,  0.25845727,  2.86561982,  1.45278606]), 
    array([5,10,15,20,25)]), 
    array([10,11,12,13,14])]

Это то, что я пробовал, но это не работает.

for column in np.transpose(C):
    C_arr = np.hstack(column)
    # j = int(k)-1
    C_Values[j].append(C_arr)

Я ожидаю, что я должен получить пять столбцов с тремя элементами в каждом столбце.

Ожидаемый результат:

2.05096059 3.65564871 0.25845727 2.86561982 1.45278606
5          10         15         20         25
10         11         12         13         14

1 Ответ

0 голосов
/ 12 января 2019

После устранения несоответствия:

In [373]: a =[np.array([ 2.05096059,  3.65564871,  0.25845727,  2.86561982,  1.4
     ...: 5278606]), 
     ...:     np.array([5,10,15,20,25]), 
     ...:     np.array([10,11,12,13,14])]
     ...:     
In [374]: a
Out[374]: 
[array([2.05096059, 3.65564871, 0.25845727, 2.86561982, 1.45278606]),
 array([ 5, 10, 15, 20, 25]),
 array([10, 11, 12, 13, 14])]

In [377]: np.transpose(a)  
Out[377]: 
array([[ 2.05096059,  5.        , 10.        ],
       [ 3.65564871, 10.        , 11.        ],
       [ 0.25845727, 15.        , 12.        ],
       [ 2.86561982, 20.        , 13.        ],
       [ 1.45278606, 25.        , 14.        ]])

Это массив (5,3) с плавающей точкой; простая итерация создает строки, одну за другой.

Печать каждого массива в отдельности позволяет нам контролировать формат:

In [378]: print(('%10f'*5)%tuple(a[0]))
     ...: print(('%10d'*5)%tuple(a[1]))
     ...: print(('%10d'*5)%tuple(a[2]))
     ...: 
     ...: 
  2.050961  3.655649  0.258457  2.865620  1.452786
         5        10        15        20        25
        10        11        12        13        14

Использование стандартного numpy csv writer:

In [379]: np.savetxt('test.txt', a, fmt='%10f')
In [380]: cat test.txt
  2.050961   3.655649   0.258457   2.865620   1.452786
  5.000000  10.000000  15.000000  20.000000  25.000000
 10.000000  11.000000  12.000000  13.000000  14.000000

Можно установить другой формат для каждого столбца, но не для каждой строки.

...