numpy.where () বিস্তারিত, ধাপে ধাপে ব্যাখ্যা / উদাহরণসমূহ [বন্ধ]


168

ডক , এই পোস্টটি এবং এই অন্যান্য পোস্টটিnumpy.where() পড়া সত্ত্বেও সঠিকভাবে বুঝতে আমার সমস্যা হচ্ছে ।

কেউ 1 ডি এবং 2 ডি অ্যারে সহ ধাপে ধাপে মন্তব্য করা উদাহরণগুলি সরবরাহ করতে পারে?

উত্তর:


271

কিছুক্ষণ ঘোরাঘুরি করার পরে, আমি জিনিসগুলি সন্ধান করেছি এবং এটি অন্যদের সহায়তা করবে এই আশায় এখানে পোস্ট করছি।

স্বজ্ঞাতভাবে, np.where" এই অ্যারেটিতে কোথায়, এন্ট্রি প্রদত্ত শর্তটি পূরণ করে " আমাকে জিজ্ঞাসা করার মতো ।

>>> a = np.arange(5,10)
>>> np.where(a < 8)       # tell me where in a, entries are < 8
(array([0, 1, 2]),)       # answer: entries indexed by 0, 1, 2

এটি শর্ত পূরণ করে এমন অ্যারেতে প্রবেশের জন্যও ব্যবহার করা যেতে পারে:

>>> a[np.where(a < 8)] 
array([5, 6, 7])          # selects from a entries 0, 1, 2

যখন a2 ডি অ্যারে হয়, np.where()সারি আইডিএক্স এর একটি অ্যারে এবং কল আইডিএক্স এর একটি অ্যারে প্রদান করে:

>>> a = np.arange(4,10).reshape(2,3)
array([[4, 5, 6],
       [7, 8, 9]])
>>> np.where(a > 8)
(array(1), array(2))

1 ডি ক্ষেত্রে যেমন, আমরা np.where()2 ডি অ্যারেতে শর্ত পূরণ করে এমন এন্ট্রি পেতে ব্যবহার করতে পারি:

>>> a[np.where(a > 8)] # selects from a entries 0, 1, 2

অ্যারে ([9])


দ্রষ্টব্য, যখন a1 ডি হয়, np.where()তবুও সারি আইডিএক্স এর একটি অ্যারে এবং কল আইডেক্সের একটি অ্যারে প্রদান করে তবে কলামগুলি দৈর্ঘ্য 1 এর, তাই পরবর্তীটি খালি অ্যারে হয়।


10
আমি এনপি.হোম বোঝার জন্য লড়াই করে যাচ্ছিলাম যখন 2 ডি-তে ব্যবহৃত হওয়া অবধি আমি আপনার উত্তরটি খুঁজে পেলাম "যখন একটি 2 ডি অ্যারে হয় তখন এনপি.নেয়ার () সারি আইডেক্সের একটি অ্যারে এবং কর্ড আইডিএক্স এর একটি অ্যারে প্রদান করে:"। তার জন্য ধন্যবাদ.
বেনক্যাম্পবেল_14

1
তিনবার ডকটি পড়ার পরেও আমি বেশ বোকা বোধ করছিলাম এবং ধাঁধাটি সমাধান না করেই np.where(2d_array), এটি পরিষ্কার করার জন্য ধন্যবাদ! আপনার নিজের উত্তরটি গ্রহণ করা উচিত। ই: ওহ, এটি বন্ধ। ঠিক আছে, এটি হওয়া উচিত নয়
smcs

5
এটি লজ্জাজনক বিষয় এটি বন্ধ ছিল। তবে আমি এটির অন্য একটি বৈশিষ্ট্য যুক্ত করতে চাই np.whereঅন্যথায় সম্পূর্ণ উত্তর। ফাংশনটি শর্তের উপর নির্ভর করে x এবং y অ্যারে থেকে উপাদানগুলিও নির্বাচন করতে পারে। এই মন্তব্যে সীমিত স্থান কিন্তু দেখুন: np.where(np.array([[False,False,True], [True,False,False]]), np.array([[8,2,6], [9,5,0]]), np.array([[4,8,7], [3,2,1]]))ফিরে আসবে array([[4, 8, 6], [9, 2, 1]])। X এবং y এর কোন উপাদানগুলি সত্য / মিথ্যা অনুসারে চয়ন করা হয়েছে তা লক্ষ্য করুন
পিককোলো

এই উত্তরে প্রদত্ত ব্যাখ্যাটি কেবল এনপি.হোমারের একটি বিশেষ ক্ষেত্রে। ডকুমেন্টেশন অনুসারে, যখন কেবল সরবরাহ করা conditionহয় , তখন এই ফাংশনটি একটি শর্টহ্যান্ড np.asarray(condition).nonzero()
লেনি

19

এখানে আরও কিছু মজা। আমি দেখতে পেয়েছি যে প্রায়শই নুমপি আমার ইচ্ছা মতো করত - কখনও কখনও ডকস পড়ার চেয়ে জিনিসগুলি চেষ্টা করা আমার পক্ষে দ্রুত। আসলে উভয়ের মিশ্রণই সেরা।

আমি মনে করি আপনার উত্তর ঠিক আছে (এবং আপনি যদি এটি পছন্দ করেন তবে তা গ্রহণ করা ঠিক হবে)। এটি কেবল "অতিরিক্ত"।

import numpy as np

a = np.arange(4,10).reshape(2,3)

wh = np.where(a>7)
gt = a>7
x  = np.where(gt)

print "wh: ", wh
print "gt: ", gt
print "x:  ", x

দেয়:

wh:  (array([1, 1]), array([1, 2]))
gt:  [[False False False]
      [False  True  True]]
x:   (array([1, 1]), array([1, 2]))

... তবে:

print "a[wh]: ", a[wh]
print "a[gt]  ", a[gt]
print "a[x]:  ", a[x]

দেয়:

a[wh]:  [8 9]
a[gt]   [8 9]
a[x]:   [8 9]

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