Как проверить, является ли массив numpy пустым или нет?
Я использовал следующий код, но это ошибка, если массив содержит нуль.
if not self.Definition.all():
- это решение?
if self.Definition == array( [] ):
Как проверить, является ли массив numpy пустым или нет?
Я использовал следующий код, но это ошибка, если массив содержит нуль.
if not self.Definition.all():
- это решение?
if self.Definition == array( [] ):
Вы всегда можете взглянуть на атрибут .size
. Он определяется как целое число и равен нулю (0
), когда в массиве нет элементов:
import numpy as np
a = np.array([])
if a.size == 0:
# Do something when 'a' is empty
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
общее количество элементов массива. Это равно произведению элементов формы.
Одно предостережение, хотя. Обратите внимание, что 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