আমি কীভাবে চেক করতে পারি যে একটি নমপি অ্যারে খালি আছে কিনা?


169

আমি কীভাবে চেক করতে পারি যে একটি নমপি অ্যারে খালি আছে কিনা?

আমি নিম্নলিখিত কোডটি ব্যবহার করেছি, তবে অ্যারেতে যদি শূন্য থাকে তবে এটি ব্যর্থ হয়।

if not self.Definition.all():

এই কি সমাধান?

if self.Definition == array( [] ):

6
len(array( [] ))0 এর len(array( [0] )মান 1
স্টিভেন রাম্বালস্কি

3
আপনি কি একটি শূন্য দৈর্ঘ্যের অ্যারে, সমস্ত শূন্য, বা উভয় সমন্বিত একটি অ্যারে পরীক্ষা করতে চান? আপনার 'খালি' সংজ্ঞা কী?
জন লিয়ন

12
@ স্টিভেন রাম্বালস্কি: তবে len(array([[]])এটিও 1!
strpeter

len()প্রথম অক্ষের মাত্রার সংখ্যা দেয়। তবে প্রথম অ্যারে একটি অ্যারেতে শূন্য-মাত্রা থাকতে পারে তবে অন্য অক্ষে শূন্য মাত্রা থাকলেও খালি থাকতে পারে। sizeএটি সমস্ত অক্ষের পণ্য হিসাবে ভাল।
asmeurer

উত্তর:


303

আপনি সর্বদা .sizeবৈশিষ্ট্যটি একবার দেখে নিতে পারেন । এটি একটি পূর্ণসংখ্যা হিসাবে সংজ্ঞায়িত করা হয় এবং শূন্য হয় ( 0) যখন অ্যারেতে কোনও উপাদান থাকে না:

import numpy as np
a = np.array([])

if a.size == 0:
    # Do something when `a` is empty

4
এটি নালীর পক্ষে দুর্দান্ত, তবে দুর্ভাগ্যজনক যে এটি তালিকার জন্য অযৌক্তিক হিসাবে বিবেচিত হয়। তালিকার জন্য আলোচনা দেখুন: stackoverflow.com/questions/53513/... এটা numpy অ্যারে এবং তালিকার জন্য একই প্যাটার্ন ব্যবহার করতে চমৎকার হবে।
এরিক

সাধারণভাবে NumPy কোড তালিকাগুলিতে বা ভিসার বিপরীতে সঠিকভাবে কাজ করে না। আপনি যদি তালিকা বনাম নুমপাই অ্যারে ব্যবহার করে থাকেন তবে আপনাকে আলাদাভাবে কোড লিখতে হবে।
asmeurer

22

http://www.scipy.org/Tentative_NumPy_Tutorial#head-6a1bc005bd80e1b19f812e1e64e0d25d50f99fe2

নুমপির প্রধান অবজেক্ট হ'ল সমজাতীয় বহুমাত্রিক অ্যারে। নম্পি মাত্রায় অক্ষকে বলা হয়। অক্ষের সংখ্যা র‌্যাঙ্ক is নিম্পির অ্যারে ক্লাসকে নাদার্রে বলা হয়। এটি ওরফে অ্যারে দ্বারাও পরিচিত। একটি নাদার্রে অবজেক্টের আরও গুরুত্বপূর্ণ বৈশিষ্ট্যগুলি হ'ল:

ndarray.nd
অ্যারের অক্ষ (মাত্রা) সংখ্যা। পাইথন বিশ্বে, মাত্রার সংখ্যাটিকে র‌্যাঙ্ক হিসাবে উল্লেখ করা হয়।

ndarray
. অ্যারের মাত্রা আকার। এটি প্রতিটি মাত্রায় অ্যারের আকার নির্দেশ করে পূর্ণসংখ্যার একটি দ্বিখণ্ডক। এন সারি এবং এম কলাম সহ একটি ম্যাট্রিক্সের জন্য আকারটি (n, m) হবে। শেপ টিপলের দৈর্ঘ্য তাই র‌্যাঙ্ক, বা মাত্রার সংখ্যা, এনডিআইএম।


অ্যারের মোট উপাদানগুলির সংখ্যা ndarray.size করুন। এটি আকৃতির উপাদানগুলির সমান।


10

একটি সতর্কতা, যদিও। নোট করুন যে এনপি.আররে (কিছুই নয়)। সাইজ রিটার্ন 1! এর কারণ এ। সাইজটি এনপি.প্রড (এ। শেপ) এর সমতুল্য , এনপি.আরে (কিছুই নয়)। শেপটি (), এবং একটি খালি পণ্য 1 হয়।

>>> import numpy as np
>>> np.array(None).size
1
>>> np.array(None).shape
()
>>> np.prod(())
1.0

অতএব, আমি যদি নম্রি অ্যারেতে উপাদান থাকে তবে পরীক্ষার জন্য আমি নিম্নলিখিতটি ব্যবহার করি:

>>> def elements(array):
    ...     return array.ndim and array.size

>>> elements(np.array(None))
0
>>> elements(np.array([]))
0
>>> elements(np.zeros((2,3,4)))
24

8
ধারণকারী একটি বিন্যাস Noneবস্তুর একটি খালি অ্যারে নয়, এখানে আরও বিস্তারিত জানার জন্য উত্তরগুলি দেখতে
DrBwts

1
@ DRBwts যা এই উত্তরের সাথে সম্পর্কিত নয়।
vidstige

@ DRBwts তাঁর অ্যারেতে Noneঅবজেক্টটি নেই। এর আকার দেখুন।
নবীন

আকারযুক্ত অ্যারেগুলি ()স্কেলার অ্যারে হয়, যা কোনও উপাদান (স্কেলার) ধারণ করে। এই উদাহরণে, স্কেলারটি হল None( Noneকোনও বিশেষ অর্থ নেই, এটি কেবল একটি বস্তুর অ্যারে)। এটি আপনি কী করছেন তার উপর নির্ভর করে তবে আপনি সম্ভবত স্কেলারের অ্যারেগুলি খালি না বলে বিবেচনা করতে চান।
asmeurer

-1

অ্যারে আছে কিনা তা আমরা কেন খতিয়ে দেখতে চাই empty? অ্যারেগুলি বাড়ায় না বা সঙ্কুচিত হয় না একই তালিকাগুলি। একটি 'খালি' অ্যারে দিয়ে শুরু করে এবং বাড়ছে growingnp.append বাড়ানো প্রায়শই আধ্যাত্মিক ত্রুটি।

if alist:এর বুলিয়ান মানকে কব্জায় একটি তালিকা ব্যবহার করা :

In [102]: bool([])                                                                       
Out[102]: False
In [103]: bool([1])                                                                      
Out[103]: True

কিন্তু অ্যারে উত্পাদন করে একই কাজ করার চেষ্টা করছে (সংস্করণ 1.18):

In [104]: bool(np.array([]))                                                             
/usr/local/bin/ipython3:1: DeprecationWarning: The truth value 
   of an empty array is ambiguous. Returning False, but in 
   future this will result in an error. Use `array.size > 0` to 
   check that an array is not empty.
  #!/usr/bin/python3
Out[104]: False

In [105]: bool(np.array([1]))                                                            
Out[105]: True

এবং bool(np.array([1,2])কুখ্যাত অস্পষ্টতা ত্রুটি উত্পাদন করে।

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