В Python функция numpy.random.randn() создает массив указанных фигур и заполняет их случайными заданными значениями в соответствии со стандартным гауссовым или нормальным распределением.
- Что такое функция np.random.randn в Python?
- Синтаксис
- Параметры
- Пример
- Создание одномерного массива с использованием np random randn()
- Создание 2D-массива
- Синтаксис
- Параметры
- Как создать трехмерный массив с помощью np.random randn()
- Изменение случайно созданного массива
- Изменение формы массива, используя np.reshape()
- Заключение
Что такое функция np.random.randn в Python?
np.random.randn() — это метод библиотеки numpy, который возвращает образец (или образцы) из «стандартного нормального» распределения в Python. Он принимает размеры возвращаемого массива в качестве аргумента и возвращает либо ndarray, либо, если аргумент не указан, возвращает значение с плавающей запятой.
Функция np.random.randn() возвращает все значения в форме с плавающей запятой и в среднем распределении = 0 и дисперсии = 1.
Синтаксис
|
1 |
numpy.random.randn(d0, d1, ..., dn) |
Параметры
Если заданы положительные параметры, функция randn() генерирует массив формы(d0, d1, …, dn), заполненный случайными числами с плавающей запятой, выбранными из одномерного «нормального» (гауссова) распределения среднего 0 и дисперсии 1.
Если аргумент не указан, возвращается одно число с плавающей запятой, случайно выбранное из распределения. Кроме того, размеры возвращаемого массива не должны быть отрицательными. Если вы укажете отрицательный аргумент, он вернет ошибку. Если аргумент не указан, возвращается одно число с плавающей запятой Python.
Пример
|
1 2 3 4 5 6 |
# app.py import numpy as np data = np.random.randn() print(data) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
➜ pyt python3 app.py -0.7919353665049774 ➜ pyt python3 app.py 0.9218908714949405 ➜ pyt python3 app.py -0.025179948728764872 ➜ pyt python3 app.py 0.29764955041572655 ➜ pyt python3 app.py -0.8279168113225552 ➜ pyt python3 app.py -1.5048354875053158 |
Каждый раз, когда вы запускаете файл app.py, вы получаете разные случайные значения.
Создание одномерного массива с использованием np random randn()
Чтобы создать одномерный массив в Python, используйте метод np.random.randn(). Метод numpy random randn() принимает только одно измерение и возвращает одномерный массив.
Давайте создадим одномерный массив из 6 элементов.
|
1 2 3 4 5 6 |
# app.py import numpy as np data = np.random.randn(6) print(data) |
Выход:
|
1 2 |
python3 app.py [ 1.08086154 0.70693 0.38091969 -1.64244255 1.13132413 -0.7443323 ] |
Мы передали 6 в качестве аргумента для создания 6 случайных элементов массива.
См. другой пример.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# importing numpy import numpy as np # Now creating an 1D array of size 10 arr = np.random.randn(10) print("Values of 1D array is:\n", arr) print("Shape of the array is : ", np.shape(arr)) # Creating of size 5 arr2 = np.random.randn(5) print("Values of the array is:\n ", arr2) print("Shape of the array is : ", np.shape(arr2)) |
Выход:
|
1 2 3 4 5 6 7 8 |
python3 app.py Values of 1D array is: [ 0.456789 0.11413981 -0.06548174 0.54791075 -0.18972466 -0.11922963 1.37909645 -0.0688107 -0.02731399 0.09351504] Shape of the array is : (10,) Values of the array is: [ 0.99990254 -0.07788214 -0.63521035 -1.01484305 -0.2993925 ] Shape of the array is : (5,) |
Объяснение.
В этом примере мы напечатали два одномерных массива, используя функцию random.randn(). В первом случае мы напечатали массив формы 10, а во втором — массив формы 5. Значения массива вставляются случайным образом в соответствии с описанным выше правилом.
Создание 2D-массива
Чтобы создать двумерный массив в Python, используйте метод np.random.randn() и передайте два параметра, например размеры, и он вернет двумерный массив.
Синтаксис
Синтаксис для создания двумерного массива с помощью функции random.randn() следующий:
|
1 |
np.random.randn(d1, d2) |
Параметры
Он принимает два параметра.
- Параметр d1 показывает, сколько строк нам нужно для создания массива.
- Параметр d2 показывает, сколько столбцов нам нужно для создания массива.
См. следующий код.
|
1 2 3 4 5 6 |
# app.py import numpy as np data = np.random.randn(2, 2) print(data) |
Выход:
|
1 2 3 |
python3 app.py [[1.38596221 1.59121102] [0.11743191 0.89372055]] |
Как создать трехмерный массив с помощью np.random randn()
Чтобы создать трехмерный массив в Python, используйте метод np.random.randn() и передайте три параметра в качестве измерений, и он вернет трехмерный массив.
См. следующий код.
|
1 2 3 4 5 6 |
# app.py import numpy as np data = np.random.randn(3, 3, 3) print(data) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
python3 app.py [[[-1.31932293 -0.55698306 -0.52587777] [-1.02907293 -0.87960688 0.48399357] [-0.64534737 -0.40360183 0.90921266]] [[ 0.94321599 0.67847027 0.70100542] [-0.52738798 -0.69975292 0.0960497 ] [-0.3399558 1.54436365 0.26914068]] [[ 1.98426783 1.27291484 -0.06685548] [-0.36821547 1.30168745 1.69065317] [ 1.26130492 2.05068361 0.82860505]]] |
Он будет генерировать 3D-массивы с положительными и отрицательными случайными значениями.
Мы не можем передать отрицательное измерение в функцию randn(); в противном случае возвращается ValueError.
|
1 2 3 4 5 6 |
# app.py import numpy as np data = np.random.randn(-3) print(data) |
Выход:
|
1 2 3 4 5 6 7 8 |
python3 app.py Traceback(most recent call last): File "app.py", line 3, in <module> data = np.random.randn(-3) File "mtrand.pyx", line 1218, in numpy.random.mtrand.RandomState.randn File "mtrand.pyx", line 1375, in numpy.random.mtrand.RandomState.standard_normal File "_common.pyx", line 558, in numpy.random._common.cont ValueError: negative dimensions are not allowed |
См. другой пример кода.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# importing numpy import numpy as np # Now creating an 3D array of size 2x2x3 arr = np.random.randn(2, 2, 3) print("Values of 3D array is:\n", arr) print("Shape of the array is : ", np.shape(arr)) # Creating 2D array of size 5x5 arr2 = np.random.randn(5, 5) print("Values of the array is:\n ", arr2) print("Shape of the array is : ", np.shape(arr2)) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
python3 app.py Values of 3D array is: [[[ 1.17736919 1.26366938 -0.06364264] [ 0.57792361 -0.68398595 0.32957414]] [[ 0.49199588 0.56612773 0.98434267] [ 0.30158417 1.20173148 -0.36974876]]] Shape of the array is : (2, 2, 3) Values of the array is: [[ 2.50244931e+00 1.12361971e+00 -2.54657975e-01 2.12150049e-02 -4.34988456e-01] [-4.84566143e-01 2.24132038e-01 -1.42568814e+00 -2.47381915e-04 3.37966017e-01] [-1.56456348e+00 -2.03418573e-01 -7.98728742e-01 8.25852255e-01 -1.57770187e-01] [-8.90851952e-01 9.51316758e-01 -2.90582269e-01 -9.88468496e-01 -4.66474163e-01] [ 1.86058960e-01 3.19397531e-01 -1.59117225e+00 2.16834898e-01 -4.51887901e-01]] Shape of the array is : (5, 5) |
Объяснение.
В этом примере мы напечатали один трехмерный массив, используя функцию random.randn(). В данном случае мы напечатали массив фигур 2x2x3. Кроме того, мы напечатали один 2D-массив с помощью функции. Значения массива вставляются случайным образом в соответствии с описанным выше правилом.
Изменение случайно созданного массива
В этом примере сначала мы создадим массив 2D с помощью функции np random randn(), а затем умножим этот массив на 2, а затем добавим 2 в массив.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# app.py import numpy as np array = np.random.randn(2, 2) print("2D Array filled with random values : \n", array) # Multiplying values with 2 print("\nArray * 2 : \n", array * 2) # Or we cab directly do so by array = np.random.randn(2, 2) * 2 + 2 print("\nArray * 2 + 2 : \n", array) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
python3 app.py 2D Array filled with random values : [[ 0.61033846 -2.17725096] [-0.45407816 2.04812173]] Array * 2 : [[ 1.22067691 -4.35450192] [-0.90815633 4.09624346]] Array * 2 + 2 : [[0.99010675 2.16741196] [1.99530574 3.23772725]] |
Изменение формы массива, используя np.reshape()
Есть несколько случаев, когда нам нужно изменить форму массива. В Python функция numpy.reshape() изменяет размерность и возвращает новый массив.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 |
# app.py import numpy as np array = np.random.randn(3, 4) print(array) print("After reshape the array") print(array.reshape(6, 2)) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 |
python3 app.py [[ 0.86247213 -0.36951031 0.74445018 -1.28952837] [-1.10220821 0.15989654 -0.49336996 1.05084014] [ 0.84959592 0.7147576 0.83266357 -0.24533966]] After reshape the array [[ 0.86247213 -0.36951031] [ 0.74445018 -1.28952837] [-1.10220821 0.15989654] [-0.49336996 1.05084014] [ 0.84959592 0.7147576 ] [ 0.83266357 -0.24533966]] |
Наш первый массив создается из функции np random randn(), а затем мы использовали функцию numpy reshape() для изменения размеров массива. Помните, здесь не меняется значение массива, но меняется размерность.
Мы также можем преобразовать приведенный выше 2D-массив в 3D-массив, используя функцию reshape().
См. следующий код.
|
1 2 3 4 5 6 7 8 9 |
# app.py import numpy as np array = np.random.randn(3, 4) print(array) print("After reshape the array") print(array.reshape(2, 2, 3)) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 |
python3 app.py [[ 2.28291597 -0.53931961 -0.62792401 -0.81161398] [-0.7488756 0.43830336 0.27803475 2.64883588] [ 0.4840037 -0.95278401 0.5861628 -1.08436804]] After reshape the array [[[ 2.28291597 -0.53931961 -0.62792401] [-0.81161398 -0.7488756 0.43830336]] [[ 0.27803475 2.64883588 0.4840037 ] [-0.95278401 0.5861628 -1.08436804]]] |
Заключение
В этом уроке мы увидели, как мы можем использовать метод numpy random.randn() для создания одномерного, двумерного, трехмерного массива. Используя метод np.reshape(), мы можем изменить его размер.
