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





arrays (7)


numpy.savetxt एक सरणी को एक पाठ फ़ाइल में सहेजता है।

import numpy
a = numpy.asarray([ [1,2,3], [4,5,6], [7,8,9] ])
numpy.savetxt("foo.csv", a, delimiter=",")

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




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')

मैन पेज में कुछ उपयोगी नोट्स हैं:

यह सरणी डेटा के त्वरित भंडारण के लिए एक सुविधा समारोह है। अंतहीनता और परिशुद्धता पर जानकारी खो जाती है, इसलिए यह विधि विभिन्न एंडियननेस वाली मशीनों के बीच डेटा या परिवहन डेटा संग्रहित करने के लिए फ़ाइलों के लिए एक अच्छी पसंद नहीं है। गति और फ़ाइल आकार की कीमत पर, डेटा फ़ाइलों को पाठ फ़ाइलों के रूप में आउटपुट करके इन समस्याओं में से कुछ को दूर किया जा सकता है।

ध्यान दें। यह फ़ंक्शन मल्टी-लाइन सीएसवी फाइलों का उत्पादन नहीं करता है, यह सब कुछ एक पंक्ति में बचाता है।




अगर आप कॉलम में लिखना चाहते हैं:

    for x in np.nditer(a.T, order='C'): 
            file.write(str(x))
            file.write("\n")

यहां 'ए' numpy सरणी का नाम है और 'फ़ाइल' एक फ़ाइल में लिखने के लिए चर है।

यदि आप पंक्ति में लिखना चाहते हैं:

    writer= csv.writer(file, delimiter=',')
    for x in np.nditer(a.T, order='C'): 
            row.append(str(x))
    writer.writerow(row)



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

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



आप इसे किसी भी मॉड्यूल के बिना शुद्ध पायथन के साथ भी कर सकते हैं।

# 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)



यदि आप अपनी 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))




यदि आपके पास अंतिम नाम डुप्लिकेट हैं तो आप उन्हें पहले नाम से सॉर्ट कर सकते हैं-

obj.sort(function(a,b){
  if(a.last_nom< b.last_nom) return -1;
  if(a.last_nom >b.last_nom) return 1;
  if(a.first_nom< b.first_nom) return -1;
  if(a.first_nom >b.first_nom) return 1;
  return 0;
});




python arrays csv numpy