উত্তর:
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
স্ট্রিংসযুক্ত কোনও সামগ্রীর জন্য আপনি সিএসভি হিসাবে সংরক্ষণের জন্য কোনও পদ্ধতি লিখে দিতে পারেন ?
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')
ম্যান পৃষ্ঠায় কিছু দরকারী নোট রয়েছে:
এটি অ্যারে ডেটা দ্রুত সঞ্চয় করার জন্য একটি সুবিধাজনক ফাংশন। অন্তর্নিহিততা এবং নির্ভুলতার তথ্য হারিয়ে যায়, সুতরাং বিভিন্ন আধ্যাত্মিকতা সহ মেশিনের মধ্যে ডেটা সংরক্ষণাগার বা ডেটা পরিবহনের উদ্দেশ্যে করা ফাইলগুলির জন্য এই পদ্ধতিটি ভাল পছন্দ নয়। গতি এবং ফাইলের আকারের ব্যয়ে, পাঠ্য ফাইল হিসাবে ডেটা আউটপুট করে এই সমস্যার কিছুটি কাটিয়ে উঠতে পারে।
বিঃদ্রঃ. এই ফাংশনটি মাল্টি-লাইন সিএসভি ফাইল তৈরি করে না, এটি সমস্ত কিছু এক লাইনে সংরক্ষণ করে।
শিরোনাম সহ সিএসভি ফাইল হিসাবে রেকর্ড অ্যারে লেখার জন্য আরও কিছুটা কাজের প্রয়োজন।
এই উদাহরণটি প্রথম লাইনে শিরোনাম সহ একটি সিএসভি ফাইল পড়ে, তারপরে একই ফাইলটি লিখে।
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(...)
পদ্ধতি । তবে এটি সঠিকভাবে করার জন্য আমাদের কয়েকটি বিষয় জানতে হবে।
উদাহরণস্বরূপ, যদি আপনার সাথে একটি 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")
এখানে 'ক' নামি অ্যারের নাম এবং 'ফাইল' একটি ফাইলে লেখার জন্য ভেরিয়েবল।
আপনি যদি সারিতে লিখতে চান:
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=';'
এবং এর সাথে সিএসভি-ফাইলে থাকা ঘরটি দেখতে পাবেন[[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.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()
একটি ডিলিমিটার ক্ষেত্রগুলি পৃথক করতে ব্যবহৃত একটি স্ট্রিং। ডিফল্ট মান হ'ল কমা (,)।