W
e
l
c
o
m
e
: )

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]]
posted @ 2020-03-07 10:21  水一RAR  阅读(131)  评论(0编辑  收藏  举报