Создание массива с помощью функций zeros(), ones() и random()
Метод zeros() возвращает массив, все значения которого равны 0. В эту функцию вам нужно передать аргумент, в котором будет указана желаемая форма массива. Так создается одномерный массив:
>>>> a = np.zeros((3,))
>>>> a
>array([0.,··0.,··0.])
>>>> a.ndim
>1
>>>> a.shape
>(3,)
>>>> a.size
>3
Этот массив имеет ранг 2:
>>>> b = np.zeros((2, 4))
>>>> b
>array([[0.,··0.,··0.,··0.],
>·······[0.,··0.,··0.,··0.]])
>>>> b.ndim
>2
>>>> b.shape
>(2, 4)
>>>> b.size
>8
Другой особой функцией, заполняющей массив одинаковыми значениями, является ones():
>>>> import numpy as np
>>>> k = np.ones((3, 5))
>>>> k
>array([[1.,··1.,··1.,··1.,··1.],
>·······[1.,··1.,··1.,··1.,··1.],
>·······[1.,··1.,··1.,··1.,··1.]])
Последняя функция создает массив и заполняет его случайными значениями из промежутка от 0,0 до 1,0:
>>>> m = np.random.random((3, 5))
>>>> m
>array([[··1.92415699e-01,···4.43131404e-01,···7.99226773e-01,
>··········1.14301942e-01,···2.85383430e-04],
>·······[··6.53705749e-01,···7.48034559e-01,···4.49463241e-01,
>··········4.87906915e-01,···9.34341118e-01],
>·······[··9.47575562e-01,···2.21152583e-01,···2.49031209e-01,
>··········3.46190961e-01,···8.94842676e-01]])
Изменяем форму массива с помощью метода reshape()
До этого момента массив не особо отличался от списка или кортежа. Одним из различий между ними является возможность изменять его форму с помощью функции reshape():
>>>> a = np.arange(10)
>>>> a
>array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>>> a = a.reshape(2, 5)
>>>> a
>array([[0, 1, 2, 3, 4],
>·······[5, 6, 7, 8, 9]])
>>>> a.ndim
>2
>>>> a.shape
>(2, 5)
>>>> a.size
>10
Вы можете изменять форму массива разными способами:
>>>> a = a.reshape(5, 2)
>>>> a
>array([[0, 1],
>·······[2, 3],
>·······[4, 5],
>·······[6, 7],
>·······[8, 9]])
>>>> a.ndim
>2
>>>> a.shape
>(5, 2)
>>>> a.size
>10
Присваиваем кортеж, указывающий параметры формы, атрибуту shape:
>>>> a.shape = (2, 5)
>>>> a
>array([[0, 1, 2, 3, 4],
>·······[5, 6, 7, 8, 9]])
Единственное ограничение — произведение рангов должно быть равным количеству значений (в нашем случае 10):
>>>> a = a.reshape(3, 4)
>Traceback (most recent call last):
>··File "", line 1, in
>ValueError: total size of new array must be unchanged
Получаем элемент с помощью конструкции []
Одномерный массив работает как список:
>>>> a = np.arange(10)
>>>> a[7]
>7
>>>> a[-1]
>9
Но если массив имеет другую форму, используйте индексы, разделенные запятыми:
>>>> a.shape = (2, 5)
>>>> a
>array([[0, 1, 2, 3, 4],
>·······[5, 6, 7, 8, 9]])
>>>> a[1,2]
>7
Это отличается от двухмерного списка:
>>>> l = [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]