English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Массив ndarray можно создавать не только с помощью низкоуровневого конструктора ndarray, но и несколькими другими способами.
Метод 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 возвращает новый массив с той же формой и типом, что и заданный массив.
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(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', '')])
zeros_like возвращает нулевую массив с той же формой и типом, что и заданный массив.
Параметр
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(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.]])
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([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 используется для создания одномерного массива, массив является последовательностью арифметической прогрессии в следующем формате:
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.]]
Прямое преобразование базовых данных 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 принимает параметр buffer, чтобы читать его в виде потока и преобразовывать в объект ndarray.
numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)
Параметр
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 создает объект 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.]
Для более эффективного обучения модели и повышения ее производительности, некоторые инициализации должны соответствовать определенным условиям, таким как нормальное или равномерное распределение и т.д. В этой статье описаны несколько常用的 методов модуля 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]]