numpy学习——基础篇
日期:2021/4/20
作者:就叫易易好了
什么是numpy库?
numpy的全名为Numeric python,是Python语言的一个扩充程序库,支持高级大量的维度数组与矩阵运算,而且还提供了大量的数学函数库。
基本语法
import numpy as np
array = np.array([[1,2,3],
[2,3,4]])
print(array)
print('number of dim:',array.ndim) #几维数组
print('shape:',array.shape) #求行数是多少,列数是多少
print('size:',array.size) #总共会有多少元素在里面
如何用numpy创建矩阵,数组?
import numpy as np
a=np.array([2,23,4])
print(a)
#输出是[2 23 4]
可以给定义的属性制定type
a=np.array([2,23,4],dtype=np.int)
print(a.dtype)
#输出为:int64 也就是64位的int格式,默认64位的int 如果要设置成32位的int,可以dtype=np.int32
import numpy as np
a=np.zeros((3,4))
print(a)
#运行结果为
[[0.0.0.0.]
[0.0.0.0.]
[0.0.0.0.]]
import numpy as np
a=np.ones((3,4),dtype=np.int16)
print(a)
#运行结果为
[[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]
import numpy as np
a=np.arange(10,20,2) #从10开始,到20结束(不包括20),输出数列,公差为2
print(a)
#运行结果为
[10,12,14,16,18]
import numpy as np
a=np.arange(12).reshape((3,4)) #重新定义形状,为3行,4列
print(a)
运行结果为:
[[0 1 2 3]
[4 5 6 7]
[8 9 10 11]]
import numpy as np
a=np.linspace(1,10,5) #1到10这串数字,生成5个数,每个数字之间等距
print(a)
#运行结果为[1 3.25 5.5 7.75 10]
如果要改变上面这个矩阵的形状,可以reshape一下
import numpy as np
a=np.linspace(1,10,6).reshape((2,3)) #1到10这串数字,生成6个数,每个数字之间等距,2行3列
print(a)
#运行结果为
[[1 2.8 4.6]
[6.4 8.2 10]]
#array的减法
import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)
print(a,b)
c=a-b
print(c)
#运行结果为
[10 20 30 40][0 1 2 3]
[10 19 28 37]
#调用sin函数
import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)
c=10*np.sin(a)
print(c)
import numpy as np
b=np.arange(4)
print(b)
print(b<3)
#运行结果为
[0 1 2 3]
[True True True False]
矩阵之间的计算
import numpy as np
a=np.array([[1,1],
[0,1]])
b=np.arange(4).reshape((2,2))
c=a*b #逐个相乘
c_dot=np.dot(a,b) #矩阵相乘
print(c)
print(c_dot)
#运行结果
[[1 1]
[0 1]]
[[0 1]
[2 3]]
[[0 1]
[0 3]]
[[2 4]
[2 3]]
import numpy as np
a=np.random.random((2,4)) #随机生成一个2行4列的矩阵
print(a)
print(np.sum(a)) #求这个矩阵的所有元素和
print(np.min(a)) #求这个矩阵的最小元素
print(np.max(a)) #求这个矩阵的最大元素
#如果只需要求第一行的元素和,可以定义一个维度
print(np.sum(a,axis=1)) #按行求和
#axis=0时是按列数求和
索引
注意索引从0开始!!
import numpy as np
A=np.arange(2,14).reshape((3,4))
print(np.argmin(A)) #求最小值的索引
print(np.argmax(A)) #求最大值的索引
print(np.mean(A)) #求平均值
print(np.median(A)) #求中位数
#运行结果为
[[2 3 4 5]
[6 7 8 9]
[10 11 12 13]]
0
11
7.5
7.5
import numpy as np
A=np.arange(3,15)
print(A)
print(A[3]) #输出索引为3的元素
#运行结果为
[3 4 5 6 7 8 9 10 11 12 13 14]
6
#如果该矩阵有维度
import numpy as np
A=np.arange(3,15)。reshape((3,4))
print(A)
print(A[2]) #输出索引为2的行
print(A[1][1]) #输出索引为第1行第1列的元素
print(A[2,:]) #输出第2行的所有列
print(A[:,1]) #输出第1列的所有行
print(A[1,1:2]) #输出索引为第1列的1到2的元素值
array合并
import numpy as np
A=np.array([1,1,1])
B=np.array([2,2,2])
C=print(np.vstack((A,B))) #向下的合并,vertical stack
#运行结果为
[[1 1 1]
[2 2 2]]
#如果要看A和C的shape,可以
print(A.shape,C.shape)
结果为
(3,)(2,3)
#还可以向后合并
D=np.hstack((A,B))
print(D)
print(A.shape,D.shape)
#结果为[1 1 1 2 2 2]
(3,)(6,)
C=print(np.vstack((A,B))) #向下的合并,vertical stack
#运行结果为
[[1 1 1]
[2 2 2]]
#如果要看A和C的shape,可以
print(A.shape,C.shape)
结果为
(3,)(2,3)
#还可以向后合并
D=np.hstack((A,B))
print(D)
print(A.shape,D.shape)
#结果为[1 1 1 2 2 2]
(3,)(6,)