আমি কীভাবে একটি নুমপি অ্যারেটিকে পাইথন তালিকায় রূপান্তর করব (উদাহরণস্বরূপ [[1,2,3],[4,5,6]]
), এবং এটি যুক্তিসঙ্গতভাবে দ্রুত করব?
আমি কীভাবে একটি নুমপি অ্যারেটিকে পাইথন তালিকায় রূপান্তর করব (উদাহরণস্বরূপ [[1,2,3],[4,5,6]]
), এবং এটি যুক্তিসঙ্গতভাবে দ্রুত করব?
উত্তর:
ব্যবহার tolist()
:
import numpy as np
>>> np.array([[1,2,3],[4,5,6]]).tolist()
[[1, 2, 3], [4, 5, 6]]
নোট করুন যে এটি যে কোনও নাম্বার টাইপ (যেমন এনপি.ইন্ট 32 বা এনপি.ফ্লোয়াট 32) থেকে "নিকটতম সামঞ্জস্যপূর্ণ পাইথন টাইপ" (একটি তালিকায়) রূপান্তর করে। আপনি যদি নাম্বার ডেটা প্রকারগুলি সংরক্ষণ করতে চান, আপনি তার পরিবর্তে আপনার অ্যারেতে তালিকাটি () কল করতে পারেন এবং আপনি স্তন্যপায়ী স্কেলারগুলির একটি তালিকা দিয়ে শেষ করতে পারেন । (মিস্টার_আর_আমস_ডিকে ধন্যবাদ একটি মন্তব্যে এটি উল্লেখ করার জন্য।)
myarray.astype(np.int32).tolist()
যে করাই একটি বিকল্প হবে এবং আপনি কী অর্জন করতে চাইছেন তা স্পষ্ট। (এবং সর্বশেষে, list(array_of_type_float32)
আমি চেষ্টা করার পরে এখানে পূর্ণসংখ্যা দেয় না ... তাই আপনি কী জিজ্ঞাসা করছেন তা আমি জানি না))
float32_array = np.array([0.51764709], np.float32); print(float32_array.tolist()); print(list(float32_array))
np.array([[0, 'one'], ['two', 3]]).tolist() -> [['0', 'one'], ['two', '3']]
নাম্বার .tolist পদ্ধতিতে নেস্টি অ্যারে শেপ 2D হলে নেস্টেড তালিকা তৈরি করে।
যদি ফ্ল্যাট তালিকাগুলি পছন্দসই হয় তবে নীচের পদ্ধতিটি কাজ করে।
import numpy as np
from itertools import chain
a = [1,2,3,4,5,6,7,8,9]
print type(a), len(a), a
npa = np.asarray(a)
print type(npa), npa.shape, "\n", npa
npa = npa.reshape((3, 3))
print type(npa), npa.shape, "\n", npa
a = list(chain.from_iterable(npa))
print type(a), len(a), a`
সি = এনপি.আররে ([[1,2,3], [4,5,6]])
list(c.flatten())
tolist
তবে এটি এটিকে রূপান্তর করবেfloats
- এটি সম্ভবত পছন্দসই নয়। ব্যবহারেরlist(myarray)
ফলে এটি ভোগে না - কেন আমাদের পছন্দ করা উচিতtolist
?