Numpy .savetxt -----> Как сохранить массив / матрицу в CSV-файле в python numpy? - PullRequest
1 голос
/ 29 марта 2020

Я создал своего рода матрицу / таблицу данных в python из нескольких массивов, содержащих различные виды данных, что выглядит так в представлении переменных:

phones  starts  mids

sil 308000.0    308195.0

DH  308390.0    308410.0

AH0 308430.0    308445.0

B   308460.0    308525.0

Это три списка, которые Я объединил используя numpy .columnstack (). Я пытаюсь вывести эту таблицу / матрицу в том же формате / структуре, но как CSV, используя numpy .savetxt. Возможно ли это, учитывая различные типы переменных в каждой строке / столбце?

Когда я пытаюсь запустить:

np.savetxt('blue.txt', np.column_stack((phones, phone_starts, phone_mids)), ',', fmt="%s %f")

Я получаю сообщение об ошибке:

File "<__array_function__ internals>", line 4, in savetxt
TypeError: _savetxt_dispatcher() got multiple values for argument 'fmt'

Я также пробовал без опции 'fmt' и получил аналогичное ошибка.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Ну, вы хотите сохранить массивы np в csv с метками? это тип работы, для которого были созданы pandas.

import numpy as np
import pandas as pd

data = {
"phone_starts": np.array([308000.0, 308390.0, 308430.0, 308460.0]),
"phone_mids": np.array([308195.0, 308410.0, 308445.0, 308525.0])
   }

df = pd.DataFrame(data, index=["sil", "DH", "AH0", "B"])
df.index.name = "Phone"
df.to_csv("blue.csv")
0 голосов
/ 29 марта 2020

Попробуйте это:

floatfmt = np.vectorize(lambda x: "%1.1f" % x)
stacked = np.column_stack((phones, floatfmt(phone_starts), floatfmt(phone_mids)))

np.savetxt('blue.txt', stacked, fmt="%1s, %1s, %1s")

Вывод test файла:

sil, 308000.0, 308195.0
DH, 308390.0, 308410.0
AH0,308430.0, 308445.0
B, 308460.0, 308525.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...