H5py এ ইনপুট এবং আউটপুট নাম্বার অ্যারে


101

আমার কাছে একটি পাইথন কোড রয়েছে যার আউটপুট একটি এখানে চিত্র বর্ণনা লিখুনআকারের ম্যাট্রিক্স, যার এন্ট্রিগুলি সব ধরণের float। যদি আমি এটি এক্সটেনশান দিয়ে সংরক্ষণ করি .datতবে ফাইলের আকারটি 500 এমবি ক্রমযুক্ত। আমি পড়েছি যে ব্যবহার h5pyকরে ফাইলের আকার যথেষ্ট হ্রাস পায়। সুতরাং, আসুন আমি বলি যে আমার কাছে 2D নাম্বার অ্যারে রয়েছে A। আমি কীভাবে এটি একটি h5py ফাইলে সংরক্ষণ করব? এছাড়াও, আমি কীভাবে একই ফাইলটি পড়তে পারি এবং অ্যারের সাথে ম্যানিপুলেশনগুলি করতে পারি তাই এটি অন্য কোডে একটি নমপি অ্যারে হিসাবে রাখি?


4
আপনি কীভাবে এটি .datএক্সটেনশন দিয়ে সংরক্ষণ করছেন ?
জোর্জকা

@ জোজারেগা: তার জন্য আমি কেবলই করিnp.savetxt("output.dat",A,'%10.8e')
1

4
ধন্যবাদ (একা এক্সটেনশনের খুব বেশি অর্থ হয় না, এটি বাইনারি হিসাবে সংরক্ষণ করা যেতে পারে, এসকিআই ...)। যদি আপনার এইচডিএফ 5 এর অতিরিক্ত বৈশিষ্ট্যগুলির প্রয়োজন না হয় তবে আমি কেবল এটি ব্যবহার np.save('output.dat', A)করব যা এটি বাইনারি ফর্ম্যাটে সংরক্ষণ করবে (অনেক দ্রুত, অনেক কম জায়গা ব্যবহৃত)।
জর্জেকা

@ জোজেরেগা তবে আমি কি অন্য নামে একটি অজগর লিপিটি 2 ডি অ্যারে হিসাবে পড়তে সক্ষম হবA = np.loadtxt('output.dat',unpack=True)
লাভস্পিড

4
সুতরাং h5pyফাইলগুলি কি তাদের চেয়ে ছোট তৈরি করে না np.save? হয় h5pyযতো তাড়াতাড়ি np.saveআকার প্রশ্নে দেওয়া অ্যারে জন্য?
dbliss

উত্তর:


134

h5py ডেটাসেট এবং গোষ্ঠীগুলির একটি মডেল সরবরাহ করে । পূর্ববর্তীটি মূলত অ্যারে এবং পরে আপনি ডিরেক্টরি হিসাবে ভাবতে পারেন। প্রতিটি নামকরণ করা হয়। আপনার API এবং উদাহরণগুলির জন্য ডকুমেন্টেশনটি দেখতে হবে:

http://docs.h5py.org/en/latest/quick.html

একটি সাধারণ উদাহরণ যেখানে আপনি সমস্ত ডেটা আপফ্রন্ট তৈরি করছেন এবং কেবল একটি এইচডিএফ 5 ফাইলে সংরক্ষণ করতে চান তা দেখতে এরকম কিছু দেখাচ্ছে:

In [1]: import numpy as np
In [2]: import h5py
In [3]: a = np.random.random(size=(100,20))
In [4]: h5f = h5py.File('data.h5', 'w')
In [5]: h5f.create_dataset('dataset_1', data=a)
Out[5]: <HDF5 dataset "dataset_1": shape (100, 20), type "<f8">

In [6]: h5f.close()

তারপরে আপনি সেই ডেটা ব্যবহার করে আবার লোড করতে পারেন: '

In [10]: h5f = h5py.File('data.h5','r')
In [11]: b = h5f['dataset_1'][:]
In [12]: h5f.close()

In [13]: np.allclose(a,b)
Out[13]: True

অবশ্যই দস্তাবেজগুলি পরীক্ষা করে দেখুন:

http://docs.h5py.org

এইচডিএফ 5 ফাইলে লিখতে হয় h5py বা পাইটবেবলের উপর নির্ভর করে (প্রত্যেকের আলাদা আলাদা পাইথন এপিআই থাকে যা এইচডিএফ 5 ফাইলের নির্দিষ্টকরণের শীর্ষে থাকে)। আপনার অন্যান্য সাধারণ বাইনারি ফর্ম্যাটগুলিও দেখতে হবে যেমন আদিপুস্ত আদি দ্বারা সরবরাহ করা np.save, np.savezইত্যাদি:

http://docs.scipy.org/doc/numpy/references/routines.io.html


বিটিডব্লিউ পড়ার সময় যদি আপনি ডেটাসেটের নাম আগে জানেন না তবে আপনাকে এখানে অনুরূপ এইচডিএফ ফাইলটি পার্স করতে হবে ।
22:45 এ ট্র্যারিরিওন

আমি জোসেডেল যদি আমি ডেটাসেটে একটি কলাম যুক্ত করতে চাই। আমার ডেটাসেটটি একটি বহুমাত্রিক এনপি.আররে [img_id, সারি, কলম, চ্যানেল] হিসাবে সূচিযুক্ত। এবং আমি আপনার উত্তরে বর্ণিত পদ্ধতিটি ব্যবহার করে এটি সংরক্ষণ করেছি। আমি h5f ['ডেটাসেট_1'] [img_id] ব্যবহার করে ডেটাসেটের সমস্ত পয়েন্ট অ্যাক্সেস করি। আমি যা চাই তা হল আরেকটি কলাম যুক্ত করার একটি উপায় হ'ল মাইকোলোম '... ডেটাসেটের প্রতিটি img_id এর সাথে সম্পর্কিত। আমি কীভাবে এটিতে অন্য কলাম যুক্ত করব যাতে আমি এইচ 5 এফ ['মাইকোকলম'] [img_id] করতে পারি?
iratzhash

যদি আমি এই জাতীয় ম্যাট্রিক লিখি, তবে আমি এইচডিএফভিউ ২.১১ এর সাথে সেগুলি দেখতে পাচ্ছি না - আমি ফাইলটি খুলতে পারি, আমি দেখতে পারি যে ডেটাসেটটি data.h5বিদ্যমান, তবে আমি এটি এইচডিএফভিউ দিয়ে দেখতে পারি না। আমি এইচ 5 পিসি সহ সামগ্রীগুলি পড়তে পারি, তবে এটি এইচডিএফভিউ দিয়ে পরিদর্শন করি না। কোন ধারণা কেন?
মার্টিন থোমা

106

ফাইল উন্মুক্ত / বন্ধ এবং মেমরি ফাঁস এড়ানোর একটি ক্লিনার উপায় :

প্রস্তুতি:

import numpy as np
import h5py

data_to_write = np.random.random(size=(100,20)) # or some such

লিখুন:

with h5py.File('name-of-file.h5', 'w') as hf:
    hf.create_dataset("name-of-dataset",  data=data_to_write)

পড়ুন:

with h5py.File('name-of-file.h5', 'r') as hf:
    data = hf['name-of-dataset'][:]

4
ফাইল বন্ধ করার দরকার নেই?
রিকোয়ামোর

23
@ ড্রিড্যাঞ্চো নং, বিবৃতি সহ
লিওনিড

4
ইন্টারেক্টিভ মোডে চলার সময় বিশেষভাবে কার্যকর (কারণ অন্যথায় যদি প্রথম প্রচেষ্টাটিতে সঠিকভাবে বন্ধ না করে একই কোডটি পুনরায় চালু করা হয় তবে ইতিমধ্যে খোলা ফাইলটি সম্পর্কে h5py থেকে ব্যতিক্রম হওয়ার ঝুঁকি রয়েছে)
আন্দ্রে হল্জনার

withপাইথন বৈশিষ্ট্য প্রসঙ্গ ম্যানেজার হিসাবে পরিচিত হয়। এটি নিশ্চিত হয়ে যাবে যে এটি ব্যবহারের পরে ফাইলটি বন্ধ রয়েছে। অফিসিয়াল ডকুমেন্টেশনে আরও তথ্য পাওয়া যায়: docs.python.org/3/library/contextlib.html
চিহ্নিত করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.