जवाबों:
numpy.savetxt
टेक्स्ट फ़ाइल में एक सरणी सहेजता है।
import numpy
a = numpy.asarray([ [1,2,3], [4,5,6], [7,8,9] ])
numpy.savetxt("foo.csv", a, delimiter=",")
numpy.array
तार के लिए एक त्रुटि फेंकता है । क्या आप numpy.array
स्ट्रिंग वाले ऑब्जेक्ट के लिए csv के रूप में सहेजने के लिए कोई विधि लिख सकते हैं ?
fmt='%s'
आप उपयोग कर सकते हैं 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)
df.to_csv("file_path.csv", header=None)
header=None, index=None
हेडर पंक्ति और इंडेक्स कॉलम को हटाते हैं।
comments
कीवर्ड तर्क सेट ''
करना #
होगा, उसे दबा दिया जाएगा।
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 फ़ाइलों के रूप में रिकॉर्ड एरेज़ लिखना थोड़ा और अधिक काम की आवश्यकता है।
यह उदाहरण पहली पंक्ति पर हेडर के साथ एक सीएसवी फ़ाइल पढ़ता है, फिर उसी फ़ाइल को लिखता है।
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())
जैसा कि पहले ही चर्चा की गई है, सरणी को सीएसवी फ़ाइल में डंप करने का सबसे अच्छा तरीका .savetxt(...)
विधि का उपयोग करना है। हालांकि, कुछ चीजें हैं जिन्हें हमें ठीक से करने के लिए पता होना चाहिए।
उदाहरण के लिए, यदि आप के साथ एक numpy सरणी है dtype = np.int32
के रूप में
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
के रूप में
np.savetxt('values.csv', narr, fmt="%d", delimiter=",")
अपने मूल प्रारूप में डेटा संग्रहीत करने के लिए
इसके अलावा, संपीड़ित प्रारूप savetxt
में डेटा संग्रहीत करने के लिए उपयोग किया जा सकता है .gz
जो नेटवर्क पर डेटा स्थानांतरित करते समय उपयोगी हो सकता है।
हमें बस फ़ाइल के विस्तार को बदलने की आवश्यकता है .gz
और सुन्न अपने आप सब कुछ का ख्याल रखेगा
np.savetxt('values.gz', narr, fmt="%d", delimiter=",")
आशा है ये मदद करेगा
fmt="%d"
मैं के लिए क्या देख रहा था। धन्यवाद!
मेरा मानना है कि आप इसे इस प्रकार सरलता से पूरा कर सकते हैं:
उदा # 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
यदि आप कॉलम में लिखना चाहते हैं:
for x in np.nditer(a.T, order='C'):
file.write(str(x))
file.write("\n")
यहाँ 'a', numpy array का नाम है और 'file' एक फाइल में लिखने का वेरिएबल है।
यदि आप पंक्ति में लिखना चाहते हैं:
writer= csv.writer(file, delimiter=',')
for x in np.nditer(a.T, order='C'):
row.append(str(x))
writer.writerow(row)
यदि आप अपनी सुपीरियर सरणी (जैसे 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 फ़ाइलों में डेटा लिखने के लिए csv.writer () मॉड्यूल का उपयोग करते हैं। यह मॉड्यूल 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()
एक सीमांकक एक स्ट्रिंग है जिसका उपयोग खेतों को अलग करने के लिए किया जाता है। डिफ़ॉल्ट मान अल्पविराम (,) है।