np数组的构造

简介: np数组的构造

最一般的方法是通过array来构造:

import numpy as np
np.array([1,2,3])
array([1, 2, 3])

下面讨论一些特殊数组的生成方式:

【a】等差序列:np.linspace, np.arange

np.linspace(1,5,11) # 起始、终止(包含)、样本个数
array([1. , 1.4, 1.8, 2.2, 2.6, 3. , 3.4, 3.8, 4.2, 4.6, 5. ])
np.arange(1,5,2) # 起始、终止(不包含)、步长
array([1, 3])

【b】特殊矩阵:zeros, eye, full

np.zeros((2,3)) # 传入元组表示各维度大小
array([[0., 0., 0.],
       [0., 0., 0.]])
np.eye(3) # 3*3的单位矩阵
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
np.eye(3, k=1) # 偏移主对角线1个单位的伪单位矩阵
array([[0., 1., 0.],
       [0., 0., 1.],
       [0., 0., 0.]])
np.full((2,3), 10) # 元组传入大小,10表示填充数值
array([[10, 10, 10],
       [10, 10, 10]])
np.full((2,3), [1,2,3]) # 每行填入相同的列表
array([[1, 2, 3],
       [1, 2, 3]])

【c】随机矩阵:np.random

最常用的随机生成函数为rand, randn, randint, choice,它们分别表示0-1均匀分布的随机数组、标准正态的随机数组、随机整数组和随机列表抽样:

np.random.rand(3) # 生成服从0-1均匀分布的三个随机数
array([0.92340835, 0.20019461, 0.40755472])
np.random.rand(3, 3) # 注意这里传入的不是元组,每个维度大小分开输入
array([[0.8012362 , 0.53154881, 0.05858554],
       [0.13103034, 0.18108091, 0.30253153],
       [0.00528884, 0.99402007, 0.36348797]])

对于服从区间ab上的均匀分布可以如下生成:

a, b = 5, 15
(b - a) * np.random.rand(3) + a
array([6.59370831, 8.03865138, 9.19172546])

一般的,可以选择已有的库函数:

np.random.uniform(5, 15, 3)
array([11.26499636, 13.12311185,  6.00774156])

randn生成了N(0,I)的标准正态分布:

np.random.randn(3)
array([ 1.87000209,  1.19885561, -0.58802943])
np.random.randn(2, 2)
array([[-1.3642839 , -0.31497567],
       [-1.9452492 , -3.17272882]])

对于服从方差为\sigma^2均值为\mu的一元正态分布可以如下生成:

sigma, mu = 2.5, 3
mu + np.random.randn(3) * sigma
array([1.56024917, 0.22829486, 7.3764211 ])

同样的,也可选择从已有函数生成:

np.random.normal(3, 2.5, 3)
array([3.53517851, 5.3441269 , 3.51192744])

randint可以指定生成随机整数的最小值最大值(不包含)和维度大小:

low, high, size = 5, 15, (2,2) # 生成5到14的随机整数
np.random.randint(low, high, size)
array([[ 5, 12],
       [14,  9]])

choice可以从给定的列表中,以一定概率和方式抽取结果,当不指定概率时为均匀采样,默认抽取方式为有放回抽样:

my_list = ['a', 'b', 'c', 'd']
np.random.choice(my_list, 2, replace=False, p=[0.1, 0.7, 0.1 ,0.1])
array(['b', 'a'], dtype='<U1')
np.random.choice(my_list, (3,3))
array([['c', 'b', 'd'],
       ['d', 'a', 'd'],
       ['a', 'c', 'd']], dtype='<U1')

当返回的元素个数与原列表相同时,不放回抽样等价于使用permutation函数,即打散原列表:

np.random.permutation(my_list)
array(['c', 'a', 'd', 'b'], dtype='<U1')

最后,需要提到的是随机种子,它能够固定随机数的输出结果:

np.random.seed(0)
np.random.rand()
0.5488135039273248
np.random.seed(0)
np.random.rand()
0.5488135039273248


目录
相关文章
|
8天前
|
Python
使用array()函数创建数组
使用array()函数创建数组。
19 3
|
5月前
|
Python
NumPy生成数组的方法
NumPy生成数组的方法
|
8天前
|
存储 索引 Python
NumPy 数组创建方法与索引访问详解
NumPy 的 `ndarray` 是其核心数据结构,可通过 `array()`、`zeros()`、`ones()` 和 `empty()` 函数创建。`array()` 可以将列表等转换为数组;`zeros()` 和 `ones()` 生成全零或全一数组;`empty()` 创建未定义值的数组。此外,还有 `arange()`、`linspace()`、`eye()` 和 `diag()` 等特殊函数。练习包括使用这些函数创建特定数组。
117 1
|
8天前
使用zeros()函数创建数组
使用zeros()函数创建数组。
28 6
|
8天前
使用indices()函数创建数组
使用indices()函数创建数组。
24 3
|
Python
numpy重新学习系列(5)---如何用np.zeros_like创建一个新的和原来array形状一样的,但是元素为0的新的array
numpy重新学习系列(5)---如何用np.zeros_like创建一个新的和原来array形状一样的,但是元素为0的新的array
91 0
numpy重新学习系列(5)---如何用np.zeros_like创建一个新的和原来array形状一样的,但是元素为0的新的array
|
Python
numpy重新学习系列(4)---如何用np.zeros创建填充元素为0的array
numpy重新学习系列(4)---如何用np.zeros创建填充元素为0的array
73 0
|
Python
numpy重新学习系列(7)---如何用np.ones_like创建一个新的和原来array形状一样的,但是元素为1的新的array
numpy重新学习系列(7)---如何用np.ones_like创建一个新的和原来array形状一样的,但是元素为1的新的array
84 0
numpy重新学习系列(7)---如何用np.ones_like创建一个新的和原来array形状一样的,但是元素为1的新的array
|
Python
numpy重新学习系列(9)---如何用np.empty_like创建一个新的和原来array形状一样的,但是未初始化的array
numpy重新学习系列(9)---如何用np.empty_like创建一个新的和原来array形状一样的,但是未初始化的array
92 0
numpy重新学习系列(9)---如何用np.empty_like创建一个新的和原来array形状一样的,但是未初始化的array
|
Python
Numpy数组——1.数组的创建
Numpy数组——1.数组的创建
173 0

热门文章

最新文章