/
Вопросы и ответы
/
Аналитика данных
/

Как создать пустой массив numpy

Как создать пустой массив numpy

4 года назад

Arthur Cheremisin

Ответы

0

Для создания пустого массива в библиотеке NumPy необходимо использовать функцию numpy.empty(). Эта функция создает новый массив указанной формы, но не инициализирует его значениями, оставляя содержимое массива неопределенным.

1
2
3
4
5
6
7
import numpy as np

# Создание пустого одномерного массива
empty_array = np.empty(5)

# Создание пустого двумерного массива
empty_array_2d = np.empty((2, 3))

В результате выполнения данного кода будет создан пустой одномерный массив из пяти элементов и пустой двумерный массив размером 2x3. Важно помнить, что значения элементов пустого массива могут быть произвольными и зависят от содержимого памяти, которая была выделена для массива. Для инициализации массива определенными значениями следует использовать другие методы, такие как numpy.zeros() или numpy.ones().

2 года назад

Ivan Mamtsev

0

«Пустой массив» в NumPy понимают по-разному. Функция зависит от задачи.

Что нужноКак создать
массив без элементовnp.array([])
массив без строк, но с заданным числом столбцовnp.empty((0, 3))
массив нужного размера из нулейnp.zeros((3, 4))
массив нужного размера, значения не важныnp.empty((3, 4))
массив, заполненный одним значениемnp.full((3, 4), -1)

Массив без элементов

1
2
3
4
5
import numpy as np

a = np.array([])
print(a.shape)  # (0,)
print(a.size)   # 0

np.empty не создаёт пустой массив

1
2
3
b = np.empty((2, 3))
print(b)
# [[6.9e-310 6.9e-310 ...]]  случайные числа

np.empty выделяет память нужного размера и не заполняет её. В массиве окажется то, что лежало в памяти. Используйте его, только если сразу перезапишете все значения. В остальных случаях нужен np.zeros.

Массив под добавление строк

1
2
3
4
5
6
rows = np.empty((0, 3))
rows = np.vstack([rows, [1, 2, 3]])
rows = np.vstack([rows, [4, 5, 6]])
print(rows)
# [[1. 2. 3.]
#  [4. 5. 6.]]

Число столбцов нужно задать заранее, иначе vstack выдаст ошибку размерностей.

Не добавляйте элементы в цикле

np.append и np.vstack каждый раз создают новый массив и копируют в него данные. На тысячах итераций это медленно. Быстрее собрать список и превратить его в массив один раз:

1
2
3
4
5
values = []
for i in range(1000):
    values.append(i ** 2)

arr = np.array(values)

Если размер известен заранее, создайте массив сразу и заполняйте по индексу:

1
2
3
arr = np.zeros(1000)
for i in range(1000):
    arr[i] = i ** 2

Тип данных

По умолчанию zeros и empty создают массив дробных чисел float64. Тип задают аргументом dtype:

1
2
np.zeros(5, dtype=int)   # [0 0 0 0 0]
np.empty(0, dtype=str)   # массив строк без элементов

Массив такой же формы, как другой

1
2
x = np.array([[1, 2], [3, 4]])
np.zeros_like(x)  # [[0 0] [0 0]]

Проверить, пуст ли массив

1
2
if a.size == 0:
    print('пусто')

if not a: для массива из нескольких элементов выдаст ошибку ValueError. Проверяйте size.

NumPy, pandas и работу с данными в Jupyter разбирают в курсе «Python для аналитиков данных».

11 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845