নমপি অ্যারেতে নির্দিষ্ট কলামগুলি বের করা


164

এটি একটি সহজ প্রশ্ন তবে বলুন যে আমার কাছে একটি এমএক্সএন ম্যাট্রিক্স রয়েছে। আমি যা করতে চাই তা হ'ল নির্দিষ্ট কলামগুলি নিষ্কাশন করা এবং সেগুলিকে অন্য একটি নমপি অ্যারেগুলিতে সঞ্চয় করা তবে আমি অবৈধ সিনট্যাক্স ত্রুটি পেয়েছি। কোডটি এখানে:

extractedData = data[[:,1],[:,9]]. 

উপরের লাইনের মতো মনে হচ্ছে যথেষ্ট হবে তবে আমি অনুমান করি না। আমি চারপাশে তাকালাম তবে এই নির্দিষ্ট দৃশ্যের সাথে সম্পর্কিত সিনট্যাক্সের মতো কোনও কিছুই খুঁজে পেলাম না।

উত্তর:


272

আমি ধরে নিলাম আপনি কলাম চাইছিলেন 1এবং 9? যে

data[:, [1, 9]]

বা নাম সহ:

data[:, ['Column Name1','Column Name2']]

আপনি নামগুলি থেকে পেতে পারেন data.dtype.names...


কলামের নাম দিয়ে এটি কীভাবে করবেন?
জেলফির কাল্টসটহল

9
ডেটা [:, ['কলামের নাম 1', 'কলামের নাম 2']]
কোড-ঘাতক

এটা কি দর্শন বা অনুলিপি? আমার বাধা এই লাইনে রয়েছে আমি অনুকূলকরণের জন্য উপায় অনুসন্ধান করি
ফ্র্যাক্টাল

1
এটা কি এই ফাংশনটি আর কাজ করছে না?
পিভি

এই সিনট্যাক্সকে কী বলা হয়?
বুড়িটো


14

আপনি যদি কেবল কয়েকটি কলামই বের করতে চান:

idx_IN_columns = [1, 9]
extractedData = data[:,idx_IN_columns]

আপনি যদি নির্দিষ্ট কলামগুলি বাদ দিতে চান:

idx_OUT_columns = [1, 9]
idx_IN_columns = [i for i in xrange(np.shape(data)[1]) if i not in idx_OUT_columns]
extractedData = data[:,idx_IN_columns]

9

একটি জিনিস আমি উল্লেখ করতে চাই, হ'ল আপনি যে কলামগুলির সংখ্যা বের করতে চান 1 এর ফলে ফলাফলটি ম্যাট্রিক্স এমএক্স 1 ম্যাট্রিক্স হতে পারে না আপনি আশা করতে পারেন এমন তবে পরিবর্তিত কলামের উপাদানগুলির সমন্বিত একটি অ্যারে থাকবে।

এটিকে ম্যাট্রিক্সে রূপান্তর করতে পুনরায় আকার (এম, 1) পদ্ধতিটি ফলাফলের অ্যারেতে ব্যবহার করা উচিত।


2
এছাড়াও আপনি উদাহরণস্বরূপ, কোলন ব্যবহার করে এটি অর্জন করতে পারেন data[:, 8:9]। এটি আটটি কলাম নেয় তবে অতিরিক্ত মাত্রা সরাবে না।
জান কুকাকা

ডেটা [:, 8] এছাড়াও অষ্টম কলামটি চয়ন করবে এবং একটি এমএক্স 1 ম্যাট্রিক্স ফিরিয়ে দেবে
স্টিফানএমকে

5

শুধু:

>>> m = np.matrix(np.random.random((5, 5)))
>>> m
matrix([[0.91074101, 0.65999332, 0.69774588, 0.007355  , 0.33025395],
        [0.11078742, 0.67463754, 0.43158254, 0.95367876, 0.85926405],
        [0.98665185, 0.86431513, 0.12153138, 0.73006437, 0.13404811],
        [0.24602225, 0.66139215, 0.08400288, 0.56769924, 0.47974697],
        [0.25345299, 0.76385882, 0.11002419, 0.2509888 , 0.06312359]])
>>> m[:,[1, 2]]
matrix([[0.65999332, 0.69774588],
        [0.67463754, 0.43158254],
        [0.86431513, 0.12153138],
        [0.66139215, 0.08400288],
        [0.76385882, 0.11002419]])

কলামগুলি ক্রমযুক্ত হওয়ার দরকার নেই:

>>> m[:,[2, 1, 3]]
matrix([[0.69774588, 0.65999332, 0.007355  ],
        [0.43158254, 0.67463754, 0.95367876],
        [0.12153138, 0.86431513, 0.73006437],
        [0.08400288, 0.66139215, 0.56769924],
        [0.11002419, 0.76385882, 0.2509888 ]])

2

এই জাতীয় তালিকা ব্যবহার করে এনডি অ্যারে থেকে কলামগুলি নির্বাচন করার সময় আপনার আরও একটি বিষয় মনোযোগ দেওয়া উচিত:

data[:,:,[1,9]]

যদি আপনি কোনও মাত্রা অপসারণ করছেন (উদাহরণস্বরূপ কেবল একটি সারি নির্বাচন করে), ফলাফল প্রাপ্ত অ্যারে (কোনও কারণে) অনুমতিপ্রাপ্ত হবে । তাই:

print data.shape            # gives [10,20,30]
selection = data[1,:,[1,9]]
print selection.shape       # gives [2,20] instead of [20,2]!!

1

তুমি ব্যবহার করতে পার :

extracted_data = data.ix[:,['Column1','Column2']]


2
একটি উত্তরের উত্তরটি সর্বদা কেবল ওপি-র জন্যই নয়, ভবিষ্যতে এসও-তে আগত দর্শকদের জন্য কী করা হয়েছিল এবং কেন এটি এমনভাবে করা হয়েছিল তার একটি ব্যাখ্যা সবসময় থাকবে। অন্যদের বোঝাতে দয়া করে কিছু বিবরণ যুক্ত করুন।
রুচা ভট্ট জোশী

-1

আমি মনে করি যে সমাধানটি পাইথন সংস্করণটির আপডেটের সাথে আর কাজ করছে না, এটির জন্য একটি নতুন অজগর ফাংশনটি করার একটি উপায় হ'ল:

extracted_data = data[['Column Name1','Column Name2']].to_numpy()

যা আপনাকে কাঙ্ক্ষিত ফলাফল দেয়।

আপনি যে ডকুমেন্টেশনটি এখানে পেতে পারেন: https://pandas.pydata.org/pandas-docs/stable/references/api/pandas.DataFrame.to_numpy.html#pandas.DataFrame.to_numpy


প্রশ্নটি একটি ডেফিফ্রেম নয়, একটি অদ্ভুত অ্যারে দিয়ে শুরু হয়
টিএমআরটিস্মিত

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.