4.Numpy创建数组
Numpy创建数组:
方法 | 概述 |
---|---|
np.array | 常用于创建一维数组,或多维数组,可 |
np.ones | 用于创建全为1的数组 |
np.zeros | 用于创建全为0的数组 |
np.arange | 函数式创建数组,参数为start,stop,step的数组 |
np.linspace | 创建等差数组 |
np.logspace | 创建等比数组 |
np.eye | 创建单位数组 |
np.random.rand | 创建均态分布的数组 |
np.random.randn | 创建正态分布 |
np.random.randint(start,stop,size[行,列]) | 创建随机整数数组 |
np.diag | 创建对角数组 |
举例:
创建一维数组 np.array:
arr_1 = np.array([1, 2, 3, 4])
print(arr_1)
print(arr_1.shape)
print(arr_1.ndim)
结果:
[1 2 3 4]
(4,)
1
创建二维数组 np.array:
arr_2 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
print(arr_2)
print(arr_2.shape)
print(arr_2.ndim)
[[1 2 3 4]
[5 6 7 8]]
(2, 4)
2
创建全1数组 np.ones:
arr_4 = np.ones((3, 4))
print(arr_4)
print(arr_4.shape)
print(arr_4.ndim)
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
(3, 4)
2
创建全0数组 np.zeros:
arr_3 = np.zeros((3, 4))
print(arr_3)
print(arr_3.shape)
print(arr_3.ndim)
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
(3, 4)
2
函数式创建 np.arange:
arr1 = np.arange(1,11).reshape(2,5)
print(arr1)
print(arr1.shape)
print(arr1.ndim)
[ 1 2 3 4 5 6 7 8 9 10]
(10,)
1
创建等差数组 np.linspace:
arr2 = np.linspace(1, 10, 11)
print(arr2)
# 可以看到 1到10之间 11个数 每个数之间都相差 0.9
[ 1. 1.9 2.8 3.7 4.6 5.5 6.4 7.3 8.2 9.1 10. ]
创建等比数列 np.logspace:
arr = np.logspace(0, 2, 3, base=5)
print(arr)
# logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None,axis=0)
# 可以看到这边我的start为0,stop为2 3个值 base也是就底数是 5
# 所以结果为 5的0次方 5的 一次方 5的 二次方
[ 1. 5. 25.]
创建单位数组 np.eye:
函数的源码:numpy.eye(N,M=None,k=0,dtype=<class 'float'>,order='C)
返回的是一个二维2的数组(N,M),对角线的地方为1,其余的地方为0.
参数介绍:
(1)N:int型,表示的是输出的行数
(2)M:int型,可选项,输出的列数,如果没有就默认为N
(3)k:int型,可选项,对角线的下标,默认为0表示的是主对角线,负数表示的是低对角,正数表示的是高对角。
(4)dtype:数据的类型,可选项,返回的数据的数据类型
(5)order:{‘C’,‘F'},可选项,也就是输出的数组的形式是按照C语言的行优先’C',还是按照Fortran形式的列优先‘F'存储在内存中
# k=0,也就是 默认状态
print(np.eye(3,4))
# 结果 此时1为主对角
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]]
# k= 1,上对角
print(np.eye(3,4,k=1))
# 结果 可以看到 结果 在 主对角 之上
[[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
# k=-1 下对角
print(np.eye(3,4,k=-1))
# 结果: 可以看到 结果在主对角之下
[[0. 0. 0. 0.]
[1. 0. 0. 0.]
[0. 1. 0. 0.]]
创建均态分布数组 np.random.rand:
- 当函数括号内没有参数时,则返回一个浮点数;
- 当函数括号内有一个参数时,则返回行为1的数组,不能表示向量和矩阵;
- 当函数括号内有两个及以上参数时,则返回对应维度的数组,能表示向量或矩阵;
print(np.random.rand())
# 结果
0.6666322058421129
print(np.random.rand(5))
# 结果
[0.80974512 0.17481634 0.84587568 0.34293748 0.07682487]
print(np.random.rand(5,5))
# 结果
[[0.97799225 0.87894912 0.44958582 0.27005008 0.98413587]
[0.50184762 0.7146355 0.01167244 0.83031085 0.59642562]
[0.47182227 0.16574481 0.79815879 0.94022996 0.97866643]
[0.2026655 0.14035367 0.42930336 0.3049193 0.90877316]
[0.90124044 0.15438609 0.31352062 0.28505342 0.9798962 ]]
创建正态分布:
取值主要在-1.96~+1.96之间
print(np.random.randn(5, 5))
[[ 1.78895429 1.56526801 -0.01164899 -0.90477416 0.83365337]
[ 2.02608821 -0.03052822 0.28649491 -1.36963487 -0.52465224]
[ 1.54649692 -0.48286537 1.02318222 0.50321752 -0.75248906]
[ 0.32969226 -0.74096842 -0.86125372 0.23751313 0.55050479]
[-0.74839973 0.81502343 1.00443496 -0.60889057 0.63721457]]
创建随机整数数组 np.random.randint:
print(np.random.randint(2,10,size=[2,5]))
# 2,10之间的随机数 size =[2,5] 两行五列的数组
# 结果
[[3 8 4 3 6]
[8 7 2 8 2]]
创建对角数组 np.diag:
print(np.diag([5, 6, 7, 8,9]))
# 创建对角数组,为对应行数 对应列数数组
# 结果
[[5 0 0 0 0]
[0 6 0 0 0]
[0 0 7 0 0]
[0 0 0 8 0]
[0 0 0 0 9]]