NumPy 배열을 csv 파일로 덤프
NumPy 배열을 CSV 파일로 덤프하는 방법이 있습니까? 2D NumPy 배열이 있으며 사람이 읽을 수있는 형식으로 덤프해야합니다.
numpy.savetxt
배열을 텍스트 파일로 저장합니다.
import numpy
a = numpy.asarray([ [1,2,3], [4,5,6], [7,8,9] ])
numpy.savetxt("foo.csv", a, delimiter=",")
사용할 수 있습니다 pandas
. 여분의 메모리가 필요하므로 항상 가능하지는 않지만 매우 빠르고 사용하기 쉽습니다.
import pandas as pd
pd.DataFrame(np_array).to_csv("path/to/file.csv")
머리글이나 색인을 원하지 않으면 to_csv("/path/to/file.csv", header=None, index=None)
tofile
이 작업을 수행하는 편리한 기능입니다.
import numpy as np
a = np.asarray([ [1,2,3], [4,5,6], [7,8,9] ])
a.tofile('foo.csv',sep=',',format='%10.5f')
매뉴얼 페이지에는 유용한 참고 사항이 있습니다.
이것은 어레이 데이터의 빠른 저장을위한 편리한 기능입니다. 엔디안 및 정밀도에 대한 정보가 손실되므로이 방법은 엔디안이 다른 시스템간에 데이터를 아카이브하거나 데이터를 전송하려는 파일에는 적합하지 않습니다. 이러한 문제 중 일부는 속도와 파일 크기를 희생하면서 데이터를 텍스트 파일로 출력하여 극복 할 수 있습니다.
노트. 이 기능은 여러 줄 csv 파일을 생성하지 않으며 모든 것을 한 줄에 저장합니다.
레코드 배열을 헤더가있는 CSV 파일로 쓰려면 약간 더 많은 작업이 필요합니다.
이 예에서는 첫 번째 줄에 헤더가있는 CSV 파일을 읽은 다음 동일한 파일을 씁니다.
import numpy as np
# Write an example CSV file with headers on first line
with open('example.csv', 'w') as fp:
fp.write('''\
col1,col2,col3
1,100.1,string1
2,222.2,second string
''')
# Read it as a Numpy record array
ar = np.recfromcsv('example.csv')
print(repr(ar))
# rec.array([(1, 100.1, 'string1'), (2, 222.2, 'second string')],
# dtype=[('col1', '<i4'), ('col2', '<f8'), ('col3', 'S13')])
# Write as a CSV file with headers on first line
with open('out.csv', 'w') as fp:
fp.write(','.join(ar.dtype.names) + '\n')
np.savetxt(fp, ar, '%s', ',')
이 예에서는 쉼표가있는 문자열을 고려하지 않습니다. 숫자가 아닌 데이터에 대한 따옴표를 고려하려면 csv
패키지를 사용하십시오 .
import csv
with open('out2.csv', 'wb') as fp:
writer = csv.writer(fp, quoting=csv.QUOTE_NONNUMERIC)
writer.writerow(ar.dtype.names)
writer.writerows(ar.tolist())
이미 논의했듯이 배열을 CSV 파일로 덤프하는 가장 좋은 방법은 .savetxt(...)
method 를 사용 하는 것입니다. 그러나 올바르게 수행하기 위해 알아야 할 사항이 있습니다.
예를 들어 dtype = np.int32
as 가 numpy 배열 인 경우
narr = np.array([[1,2],
[3,4],
[5,6]], dtype=np.int32)
및 사용하여 저장할 savetxt
로
np.savetxt('values.csv', narr, delimiter=",")
부동 소수점 지수 형식으로 데이터를 저장합니다.
1.000000000000000000e+00,2.000000000000000000e+00
3.000000000000000000e+00,4.000000000000000000e+00
5.000000000000000000e+00,6.000000000000000000e+00
fmt
as 라는 매개 변수를 사용하여 형식을 변경해야합니다.
np.savetxt('values.csv', narr, fmt="%d", delimiter=",")
데이터를 원래 형식으로 저장
압축 gz 형식으로 데이터 저장
또한 네트워크를 통해 데이터를 전송할 때 유용 할 수 savetxt
있는 .gz
압축 형식으로 데이터를 저장하는 데 사용할 수 있습니다 .
.gz
numpy는 모든 것을 자동으로 처리 하므로 파일의 확장자를 변경하면 됩니다.
np.savetxt('values.gz', narr, fmt="%d", delimiter=",")
그것이 도움이되기를 바랍니다.
열에 쓰려면 :
for x in np.nditer(a.T, order='C'):
file.write(str(x))
file.write("\n")
여기서 'a'는 numpy 배열의 이름이고 'file'은 파일에 쓸 변수입니다.
행에 쓰려면 :
writer= csv.writer(file, delimiter=',')
for x in np.nditer(a.T, order='C'):
row.append(str(x))
writer.writerow(row)
numpy 배열 (예 :) your_array = np.array([[1,2],[3,4]])
을 하나의 셀 에 저장하려면 먼저로 변환하십시오 your_array.tolist()
.
그런 다음 일반적인 방법으로 하나 delimiter=';'
의 셀에 저장하면 csv 파일의 셀은 다음과 같습니다.[[1, 2], [2, 4]]
그런 다음 다음과 같이 배열을 복원 할 수 있습니다. your_array = np.array(ast.literal_eval(cell_string))
모듈을 사용하지 않고 순수한 파이썬으로 할 수도 있습니다.
# format as a block of csv text to do whatever you want
csv_rows = ["{},{}".format(i, j) for i, j in array]
csv_text = "\n".join(csv_rows)
# write it to a file
with open('file.csv', 'w') as f:
f.write(csv_text)
파이썬에서는 csv.writer () 모듈을 사용하여 csv 파일에 데이터를 씁니다. 이 모듈은 csv.reader () 모듈과 유사합니다.
import csv
person = [['SN', 'Person', 'DOB'],
['1', 'John', '18/1/1997'],
['2', 'Marie','19/2/1998'],
['3', 'Simon','20/3/1999'],
['4', 'Erik', '21/4/2000'],
['5', 'Ana', '22/5/2001']]
csv.register_dialect('myDialect',
delimiter = '|',
quoting=csv.QUOTE_NONE,
skipinitialspace=True)
with open('dob.csv', 'w') as f:
writer = csv.writer(f, dialect='myDialect')
for row in person:
writer.writerow(row)
f.close()
구분자는 필드를 구분하는 데 사용되는 문자열입니다. 기본값은 쉼표 (,)입니다.
다음과 같이 간단하게 수행 할 수 있다고 생각합니다.
- Numpy 배열을 Pandas 데이터 프레임으로 변환
- CSV로 저장
예 : # 1 :
# Libraries to import
import pandas as pd
import nump as np
#N x N numpy array (dimensions dont matter)
corr_mat #your numpy array
my_df = pd.DataFrame(corr_mat) #converting it to a pandas dataframe
예 : # 2 :
#save as csv
my_df.to_csv('foo.csv', index=False) # "foo" is the name you want to give
# to csv file. Make sure to add ".csv"
# after whatever name like in the code
참고 URL : https://stackoverflow.com/questions/6081008/dump-a-numpy-array-into-a-csv-file
'Programing' 카테고리의 다른 글
jQuery는 텍스트를 얻는다 (0) | 2020.02.15 |
---|---|
jQuery $ (문서) .ready 및 UpdatePanels? (0) | 2020.02.15 |
가상 환경 내부에서 pip 자체를 어떻게 업데이트합니까? (0) | 2020.02.15 |
첫 경기에서 멈출 정규 표현식 (0) | 2020.02.15 |
이 활동에는 이미 창 장식에서 제공하는 작업 표시 줄이 있습니다. (0) | 2020.02.15 |