Как я могу проверить, пуст numpy пуст или нет?

Как проверить, является ли массив numpy пустым или нет?

Я использовал следующий код, но это ошибка, если массив содержит нуль.

if not self.Definition.all():

- это решение?

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

Ответ 1

Вы всегда можете взглянуть на атрибут .size. Он определяется как целое число и равен нулю (0), когда в массиве нет элементов:

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

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

Ответ 2

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

Основной объект NumPy - это однородный многомерный массив. В размерах Nump называются осями. Число осей - ранг. Класс массива Numpy называется ndarray. Он также известен массивом псевдонимов. Более важными атрибутами объекта ndarray являются:

ndarray.ndim
количество осей (размеров) массива. В мире Python число измерений называется рангом.

ndarray.shape
размеры массива. Это кортеж целых чисел, указывающий размер массива в каждом измерении. Для матрицы с n строками и m столбцами форма будет (n, m). Следовательно, длина кортежа формы - это ранг или число измерений, ndim.

ndarray.size
общее количество элементов массива. Это равно произведению элементов формы.

Ответ 3

Одно предостережение, хотя. Обратите внимание, что np.array(None).size возвращает 1! Это потому, что a.size эквивалентно np.prod(a.shape), np.array(None).shape is(), а пустой продукт равен 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