programing

numpy 배열이 비어 있는지 확인하려면 어떻게 해야 합니까?

bestcode 2022. 9. 26. 23:07
반응형

numpy 배열이 비어 있는지 확인하려면 어떻게 해야 합니까?

numpy 배열이 비어 있는지 확인하려면 어떻게 해야 합니까?

다음 코드를 사용했지만 어레이에 0이 포함되어 있으면 실패합니다.

if not self.Definition.all():

이게 해결책인가요?

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

언제든지 볼 수 있습니다..size기여하다.이는 정수로 정의되며 0입니다.0배열에 요소가 없는 경우:

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

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

https://numpy.org/devdocs/user/quickstart.html (802.04.08)

NumPy의 주요 객체는 동종 다차원 배열입니다.이것은 음이 아닌 정수 튜플에 의해 색인화된 모든 동일한 유형의 요소(일반적으로 숫자)의 표입니다.NumPy 치수는 축이라고 부릅니다. (...) NumPy의 배열 클래스는 ndarray라고 불립니다. (...) ndarray 객체의 더 중요한 속성은 다음과 같습니다.

ndarray.ndim
배열의 축 수(치수)입니다.

ndarray.모양.
배열의 치수이것은 각 차원에서의 배열 크기를 나타내는 정수 튜플입니다.행과 열이 n개이고 열이 m개인 행렬의 경우 모양은 (n,m)이 됩니다.따라서 형상 튜플의 길이는 축의 수(ndim)입니다.

ndarray.size 배열의 총 요소 수입니다.이것은 모양 요소의 곱과 같습니다.

단 한 가지 주의사항이 있습니다.np.array(없음)에 주의해 주세요.size는 1을 반환합니다!이는 a.size가 np.prod(a.shape), np.array(None)와 동일하기 때문입니다.모양은 (), 빈 제품은 1입니다.

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

따라서 numpy 배열에 요소가 있는지 테스트하려면 다음을 사용합니다.

>>> 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

어레이가 다음과 같은지 확인해야 하는 이유는 무엇입니까?empty어레이는 리스트와 같은 확장 또는 축소되지 않습니다.'빈' 어레이에서 시작하여 다음 스토리지로 확장np.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])불명확한 모호성 오류를 생성합니다.

편집하다

인정된 답변은 시사하는 바가 있다.size:

In [11]: x = np.array([])
In [12]: x.size
Out[12]: 0

하지만 저(및 다른 대부분의 경우)는shape그 이상size:

In [13]: x.shape
Out[13]: (0,)

또 다른 유리한 점은 이 '매핑'이 이 '매핑'하는 것입니다.empty리스트:

In [14]: x.tolist()
Out[14]: []

단, 0의 다른 어레이도 있습니다.size마지막 의미에서는 비어 있지 않습니다.

In [15]: x = np.array([[]])
In [16]: x.size
Out[16]: 0
In [17]: x.shape
Out[17]: (1, 0)
In [18]: x.tolist()
Out[18]: [[]]
In [19]: bool(x.tolist())
Out[19]: True

np.array([[],[]])사이즈도 0이지만 모양(2,0)과len 2.

이 컨셉은empty리스트는 잘 정의되어 있습니다.empty array잘 정의되어 있지 않습니다.빈 리스트는 다른 리스트와 동일합니다. 할 수 size 0manager.manager로 하다

답은 정말 에 달려있다.

  • '비었다'는 게 무슨 뜻이죠?
  • 당신은 정말 무엇을 위해 테스트하는 건가요?

언급URL : https://stackoverflow.com/questions/11295609/how-can-i-check-whether-a-numpy-array-is-empty-or-not

반응형