English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Создание массивов NumPy

Массив ndarray можно создавать не только с помощью низкоуровневого конструктора ndarray, но и несколькими другими способами.

numpy.empty

Метод numpy.empty используется для создания массива с заданной формой (shape), типом данных (dtype) и неинициализированными элементами:

numpy.empty(shape, dtype=float, order='C')

Возвращает новый массив с заданной формой и типом, не инициализируя элементы.

Параметр

prototype - форма нулевого массива.dtype(по умолчанию) - выходной тип данных массива, например numpy.int8. По умолчанию: numpy.float64.order(по умолчанию: 'C') - Есть два варианта «C» и «F», которые представляют собой порядок хранения элементов в памяти компьютера, приоритет строк и столбцов.

Возвратное значение: массив с формой заданного массива, но неинициализированными данными (случайные) по типу и порядку.

>>> import numpy as np
>>> np.empty([2, 2])
array([[1., 0.],
       [0., 1.]])
>>> np.empty([2, 2], dtype=int)
array([[4607182418800017408, 0],
       [0, 4607182418800017408]])
>>>
Внимание:Примечание − Элементы массива случайные, так как они не инициализированы.

numpy.empty_like

numpy.empty возвращает новый массив с той же формой и типом, что и заданный массив.

numpy.empty_like(prototype, dtype=None, order='K', subok=True, shape=None)

Возвращает новый массив с той же формой и типом, что и заданный массив

Параметр

prototype - Форма и тип данных исходного массива определяют те же свойства возвращаемого массива.dtype - Тип данных результатов покрытия.order - Размещение памяти результатов. Если prototypeFortran последовательный, то «A» означает «F»,否则 «C». «K» означает, что prototype возможно лучше соответствует разметке.subok - Если True, то созданный новый массив будет использовать подкласс 'a', в противном случае это будет базовый массив. По умолчанию True.shape - форма результата. Если order = 'K' и количество размеров не изменяется, пытается поддерживать порядок, в противном случае подразумевается order = 'C'.

Возврат: массив с той же формой и типом, что и прототип, неинициализированный (любой) массив данных.

>>> import numpy as np
>>> a = ([1, 2, 3], [4, 5, 6])  # a is array-like
>>> np.empty_like(a)
array([[6917529027641081856, -6917520256071729910, 98],
       [0, 0, 0]
>>> a = np.array([[1., 2., 3.], [4., 5., 6.]])
>>> np.empty_like(a)
array([[2.68156159e+154, 2.68156159e+154, 3.32479618e+181],
       [2.68156159e+154, 2.68156159e+154, 3.32479618e+181]

numpy.zeros

Создает массив заданного размера, элементами которого является ноль:

numpy.zeros(shape, dtype = float, order = 'C')

Параметр

shape - форма нулевого массива.dtype - выходной тип данных массива, например numpy.int8. По умолчанию: numpy.float64.order - '{'C', 'F'}', опционально, по умолчанию: 'C', означает хранение данных в памяти в порядке строк (C) или столбцов (Fortran).

Возврат: нулевой массив с той же формой, типом данных и порядком, что и заданный массив.

>>> import numpy as np
>>> np.zeros(5)
array([0.0, 0.0, 0.0, 0.0, 0.0])
>>> np.zeros((5,), dtype=int)
array([0, 0, 0, 0, 0])
>>> np.zeros((2, 1))
array([[0.0],
       [0.0]
>>> s = (2,2)
>>> np.zeros((2,), dtype=[('x', 'i4'), ('y', '')])  # пользовательский dtype
array([(0, 0), (0, 0)], dtype=[('x', '<i4'), ('y', '')])

numpy.zeros_like

zeros_like возвращает нулевую массив с той же формой и типом, что и заданный массив.

numpy.zeros_like(a, dtype=None, order='K', subok=True, shape=None)[source]

Параметр

a - Атрибут, ограничивающий возвращаемый массив по форме и типу данных.dtype - Требуемый тип данных массива.order - Заменить макет результата.subok - Если True, то созданный новый массив будет использовать подкласс 'a', в противном случае это будет базовый массив. По умолчанию True.shapeint - Заменить форму результата.

Возвратное значение: массив с той же формой и типом, что и ноль.

>>> import numpy as np
>>> x = np.arange(6)
>>> x = x.reshape((2, 3))
>>> print(x)
[[0 1 2]
 [3 4 5]]
>>> np.zeros_like(x)
array([[0, 0, 0],
       [0, 0, 0]])
>>> y = np.arange(3, dtype=float)
>>> y
array([0., 1., 2.])
>>> np.zeros_like(y)
array([0., 0., 0.])

numpy.ones

Создает массив с заданной формой, заполненный единицами:

numpy.ones(shape, dtype=None, order='C')

Параметр

shape - Форма массива.dtype - Тип данных, опциональноorder - 'C' используется для строкового массива в C, или 'F' для столбцового массива в FORTRAN

>>> import numpy as np
>>> np.ones(5)
array([1., 1., 1., 1., 1.])
>>> np.ones((5,), dtype=int)
array([1, 1, 1, 1, 1])
>>> np.ones((2, 1))
array([[1.],
       [1.]])
>>> s = (2,2)
>>> np.ones(s)
array([[1., 1.],
       [1., 1.]])

numpy.ones_like

zeros_like возвращает массив с той же формой и типом, что и заданный массив.

numpy.ones_like(a, dtype=None, order='K', subok=True, shape=None)

Параметр

a - Атрибут, ограничивающий возвращаемый массив по форме и типу данных.dtype - Требуемый тип данных массива.order - Заменить макет результата.subok - Если True, то созданный новый массив будет использовать подкласс 'a', в противном случае это будет базовый массив. По умолчанию True.shape - Заменить форму результата.

Возвратное значение: массив с той же формой и типом, что и ноль.

>>> import numpy as np
>>> x = np.arange(6)
>>> x = x.reshape((2, 3))
>>> x
array([[0, 1, 2],
       [3, 4, 5]])
>>> np.ones_like(x)
array([[1, 1, 1],
       [1, 1, 1]])
>>> y = np.arange(3, dtype=float)
>>> y
array([0., 1., 2.])
>>> np.ones_like(y)
array([1., 1., 1.])

numpy.arange

numpy.arange([start,] stop, [step,] dtype=None )

Возврат均匀间隔ных значений в заданном интервале.
Создание значений в полуоткрытом интервале (то есть включение start, но не включение stop). Для целых параметров функция эквивалентна встроенной функции range Python, но возвращает ndarray вместо списка. [start, stop)

Параметр

start - Начало интервала. Интервал включает это значение. По умолчанию начальное значение 0.stop - Конец интервала. Интервал не включает это значение, за исключением случаев, когда шаг не является целым числом, и浮инговая р운да может повлиять на длину out.step - Расстояние между значениями. Для любого вывода, это расстояние между двумя последовательными значениями, по умолчанию шаг 1.dtype - Тип массива вывода.

Возврат: массив значений с равными интервалами.

>>> import numpy as np
>>> np.arange(3)
array([0, 1, 2])
>>> np.arange(3.0)
array([0., 1., 2.])
>>> np.arange(3, 7)
array([3, 4, 5, 6])
>>> np.arange(3, 7, 2)
array([3, 5])

numpy.linspace

Функция numpy.linspace используется для создания одномерного массива, массив является последовательностью арифметической прогрессии в следующем формате:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

Параметр

start - Начальное значение последовательности.stop - Конечное значение последовательности. Если endpoint true, это значение включает в себя последовательность.num - Количество образцов, генерируемых с равными шагами, по умолчанию 50.endpoint - Если это значение true,则在序列中包含stop значение, в противном случае не включает, по умолчанию это true.retstep - Если True,则在生成的数组中会显示间隔,否则不显示。dtype - тип данных массива ndarray.

В этом примере используются три параметра, устанавливается начальная точка 1, конечная точка 10, количество чисел в последовательности 10.

>>> import numpy as np
>>> a = np.linspace(1, 10, 10)
>>> print(a)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a = np.linspace(10, 20, 5, endpoint=False)
>>> print(a)
[10. 12. 14. 16. 18.]
>>> a = np.linspace(1,10,10,retstep= True)
>>> print(a)
(array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.]), 1.0)
>>> b = np.linspace(1,10,10).reshape([10,1])
>>> print(b)
[[ 1.]
 [ 2.]
 [ 3.]
 [ 4.]
 [ 5.]
 [ 6.]
 [ 7.]
 [ 8.]
 [ 9.]
 [10.]]

numpy.asarray

Прямое преобразование базовых данных Python (например, списков, кортежей и т.д.) в ndarray:

>>> import numpy as np
>>> ls1 = [10, 42, 0, -17, 30]
>>> nd1 = np.array(ls1)
>>> print(nd1)
[ 10 42 0 -17 30]
>>>
>>> print(type(nd1))

numpy.asarrayаналогичен numpy.arrayНо параметр numpy.asarray имеет только три параметра, на два меньше, чем numpy.array.

numpy.asarray(a, dtype = None, order = None)

Параметр

a - Любой вид входных параметров, может быть, список, кортеж, кортеж из кортежей, список кортежей,多维ый массив.dtype - Тип данных, опционально.order - Количество образцов, генерируемых с равными шагами, по умолчанию 50.endpoint - Опционально, имеет два варианта "C" и "F", которые представляют собой, порядок хранения элементов в памяти компьютера, соответственно, по строкам и по столбцам.

>>> import numpy as np
>>> x = [1,2,3]
>>> a = np.asarray(x)
>>> a
array([1, 2, 3])
>>> x = (1,2,3)
>>> a = np.asarray(x)
>>> print(a)
[1 2 3]
>>> x = [(1,2,3),(4,5)]
>>> a = np.asarray(x)
>>> print(a)
[(1, 2, 3) (4, 5)]
>>> x = [1,2,3]
>>> a = np.asarray(x, dtype = float)
>>> print(a)
[1. 2. 3.]

numpy.frombuffer

numpy.frombuffer используется для реализации динамического массива.
numpy.frombuffer принимает параметр buffer, чтобы читать его в виде потока и преобразовывать в объект ndarray.

numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)
Внимание:Если buffer является строкой, то по умолчанию в Python3 str является типом Unicode, поэтому его необходимо преобразовать в bytestring, добавив b перед str.

Параметр

buffer - Может быть любым объектом, который будет читаться в виде потока.dtype - Возвращает тип данных массива, опциональноcount - Количество читаемых данных, по умолчанию -1, чтение всех данных.offset - Начальная позиция чтения, по умолчанию 0.

>>> import numpy as np
>>> s = b'Hello w3codebox'
>>> a = np.frombuffer(s, dtype = 'S1')
>>> print(a)
[b'H' b'e' b'l' b'l' b'o' b' ' b'L' b'i' b'd' b'i' b'h' b'u' b'o']

numpy.fromiter

Метод numpy.fromiter создает объект ndarray из объектного итератора, возвращает одномерный массив.

numpy.fromiter(iterable, dtype, count=-1)

Параметр

iterable - Возможный объект.dtype - Возвращает тип данных массиваcount - Количество читаемых данных, по умолчанию -1, чтение всех данных.

>>> import numpy as np
>>> # Использование range функции для создания объекта списка
>>> list=range(5)
>>> it=iter(list)
>>> x=np.fromiter(it, dtype=float)
>>> print(x)
[0. 1. 2. 3. 4.]

Использование модуля random для создания массива

Для более эффективного обучения модели и повышения ее производительности, некоторые инициализации должны соответствовать определенным условиям, таким как нормальное или равномерное распределение и т.д. В этой статье описаны несколько常用的 методов модуля np.random, как показано в таблице.

ФункцияОписание
np.random.randomСоздание случайных чисел в интервале от 0 до 1
np.random.uniformСоздание случайных чисел равномерного распределения
np.random.randnСоздание случайных чисел стандартного нормального распределения
np.random.randintСоздание случайных целых чисел
np.random.normalСоздание нормального распределения
np.random.shuffleСлучайное перемешивание顺序
np.random.seedУстановить случайное значение для начальной точки
random_sampleГенерация случайных чисел с плавающей запятой
>>> import numpy as np
>>> # Создать 3x3 матрицу, заполненную нулями
>>> nd5 =np.zeros([3, 3])
>>> print("nd5 =\n", nd5)
nd5 =
 [[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
>>> # Создать 3x3 матрицу, заполненную единицами
>>> nd6 = np.ones([3, 3])
>>> print("nd6 =\n", nd6)
nd6 =
 [[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
>>>
>>> # Создать 4-й порядковый единичный матрица
>>> nd7 = np.eye(4)
>>> print("nd7 =\n", nd7)
nd7 =
 [[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]]
>>> # Создать 4-й порядковый диагональный матрица
>>> nd8 = np.diag([1, 8, 3, 10])
>>> print("nd8 =\n", nd8)
nd8 =
 [[ 1 0 0 0]
 [ 0 8 0 0]
 [ 0 0 3 0]
 [ 0 0 0 10]]