Как я могу экспортировать мой массив NUMPY в файл CSV или EXCEL - PullRequest
0 голосов
/ 19 октября 2018

Я впервые пытаюсь написать код на Python, поэтому я узнал, как создать простой массив, и как я могу экспортировать его как CSV-файл, используя np.savetxt.Но когда я открываю файл CSV в Excel, столбцы моей матрицы, кажется, объединяются в один, и анализ на нем невозможно.Мне было интересно, как я могу решить эту проблему.Я не знаю, является ли numpy правильным выбором для этого анализа или нет.Итак, если у вас есть какие-либо другие предложения, пожалуйста, включите.

Здесь я создал пустой массив с размерами a1, b1.

# Create an empty array with dim = (a1: num of months, b1:num of stations)

aa = np.empty((a1, b1))
aa[:] = np.nan

Здесь я заполнил пустую строку массивапо строке с циклом for:

for i in range(1, a1):

    S_Obs = Sta_M.iloc [i-1, 2]
    R_Val = Rad_M.iloc [i, 2:]


    addadjuster = adjust.AdjustAdd(coords, coords, nnear_raws = 5)
    addadjusted = addadjuster(S_Obs, R_Val)

    aa[i,:] = addadjusted 

Наконец, когда я отображаю мой массив строка за строкой, это выглядит так:

aa[111, :]

array([   nan,    nan,    nan, 16.296, 24.888,    nan,    nan,    nan,
          nan,    nan,    nan,    nan,    nan,    nan, 23.496,  1.704,
       52.32 ,    nan, 25.368,    nan,    nan,    nan,    nan,    nan,
          nan,    nan,    nan, 21.264, 19.584, 22.272,  0.144, 10.008,
        1.68 ,  0.   ,    nan,    nan,    nan,    nan,    nan,  0.   ,
        0.   , 30.696,    nan,    nan, 24.888,    nan,    nan,  3.648,
       14.832,  7.944,    nan,    nan,    nan,    nan,    nan,    nan,
          nan])

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

np.savetxt("AAtest.csv", aa, delimiter="/")

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

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

aa.tofile('my_csv.csv', sep=',', format='%s')
0 голосов
/ 19 октября 2018
In [155]: arr = np.zeros((4,5))
In [156]: arr[:] = np.nan
In [158]: arr[[0,0,1,2,2,3],[0,2,1,3,4,3]]=1.23
In [159]: arr
Out[159]: 
array([[1.23,  nan, 1.23,  nan,  nan],
       [ nan, 1.23,  nan,  nan,  nan],
       [ nan,  nan,  nan, 1.23, 1.23],
       [ nan,  nan,  nan, 1.23,  nan]])
In [160]: np.savetxt('test.csv',arr, delimiter=',')

Это правильно отформатированный файл через запятую.Но числа сохраняются с научными обозначениями.

In [161]: cat test.csv
1.229999999999999982e+00,nan,1.229999999999999982e+00,nan,nan
nan,1.229999999999999982e+00,nan,nan,nan
nan,nan,nan,1.229999999999999982e+00,1.229999999999999982e+00
nan,nan,nan,1.229999999999999982e+00,nan

Чтобы выстроить столбцы, нам нужно указать формат.Например:

In [162]: np.savetxt('test.csv',arr, delimiter=',', fmt='%10f')
In [163]: cat test.csv
  1.230000,       nan,  1.230000,       nan,       nan
       nan,  1.230000,       nan,       nan,       nan
       nan,       nan,       nan,  1.230000,  1.230000
       nan,       nan,       nan,  1.230000,       nan
0 голосов
/ 19 октября 2018

Вы можете использовать Pandas, чтобы решить вашу проблему введите описание ссылки здесь

Предположим, aa - это ваш массивный массив.И вы можете сделать так:

import pandas as pd

df = pd.DataFrame(aa)
df.to_csv('file.csv',index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...