[python] एक csv फ़ाइल में एक NumPy सरणी डंप करें



Answers

पांडा के साथ यह आसान और तेज़ है

import pandas as pd 
df = pd.DataFrame(np_array)
df.to_csv("file_path.csv")
Question

क्या एक NumPy सरणी को एक CSV फ़ाइल में डंप करने का कोई तरीका है? मेरे पास 2 डी न्यूमपी सरणी है और इसे मानव-पठनीय प्रारूप में डंप करने की आवश्यकता है।




हेडर के साथ सीएसवी फाइलों के रूप में रिकॉर्ड एरे लिखना थोड़ा और काम की आवश्यकता है।

यह उदाहरण पहली पंक्ति पर शीर्षलेख के साथ एक 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())



यदि आप अपनी numpy सरणी को सहेजना चाहते हैं (उदाहरण के लिए your_array = np.array([[1,2],[3,4]]) ) एक सेल में, आप इसे पहले your_array.tolist() साथ परिवर्तित कर सकते हैं।

फिर इसे एक सेल के सामान्य तरीके से सहेजें, delimiter=';' और सीएसवी फ़ाइल में सेल इस तरह दिखेगा [[1, 2], [2, 4]]

फिर आप अपनी सरणी को इस तरह बहाल कर सकते हैं: your_array = np.array(ast.literal_eval(cell_string))




Related