一、numpy概述
numpy具有矢量运算能力,快速、节省空间。numpy支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
二、numpy的运用
1、构建矩阵:
使用array方法
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
函数参数说明:
import numpy as np
#将二维列表转换成二维矩阵
a = np.array([[1,2,3],
[4,5,6]])
#定义转换类型
b = np.array([2.3,3.5,3.6],dtype=int)
print("a:\n",a)
print("b:\n",b)
运行结果:
a:
[[1 2 3]
[4 5 6]]
b:
[2 3 3]
2、数组属性:
shape方法:
import numpy as np
a = np.array([[1,23,2],[1,3,2]])
print(a.shape)
运行结果:
(2, 3)
import numpy as np
a = np.array(range(6)).reshape((2,3))
print(a)
运行结果:
[[0 1 2]
[3 4 5]]
创建0/1矩阵:
import numpy as np
a = np.zeros((2,2))
b = np.ones((2,2))
print("zeros:\n",a)
print("ones\n",b)
运行结果:
zeros:
[[0. 0.]
[0. 0.]]
ones
[[1. 1.]
[1. 1.]]
numpy.linspace
#在start与stop值之间等分,等分宽度为(stop-start)/num
numpy.linspace(start, stop, num, endpoint, retstep, dtype)
示例:
import numpy as np
a = np.linspace(10,20,5)
print(a)
输出结果:
[10. 12.5 15. 17.5 20. ]
切片和索引:
import numpy as np
a = np.arange(10)[2:7:2]
print(a)
输出结果:
[2 4 6]
矩阵合并:
import numpy as np
a = np.arange(10)[1:8:2].reshape(2,2)
b = np.arange(10)[2:9:2].reshape(2,2)
c = np.vstack((a,b))#竖直方向上
d = np.hstack((a,b))#水平方向上
#axis = 0等效于vstack
#axis = 1等效于hstack
e = np.concatenate((a,b),axis = 0)
f = np.concatenate((a,b),axis = 1)
print("竖直:\n",c,"\n水平:\n",d)
print("******************")
print("2竖直:\n",e,"\n2水平:\n",f)
运行结果:
竖直:
[[1 3]
[5 7]
[2 4]
[6 8]]
水平:
[[1 3 2 4]
[5 7 6 8]]
******************
2竖直:
[[1 3]
[5 7]
[2 4]
[6 8]]
2水平:
[[1 3 2 4]
[5 7 6 8]]
常用矩阵运算符
import numpy as np
a1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
a2 = np.array([[4,5,6],[7,8,9],[7,8,9]])
#矩阵合并,转置
print(np.vstack((a1,a2)).T)
#矩阵对位相加
print("加:",a1 + a2)
#矩阵对位相乘
print("对位相乘",a1 * a2)
#矩阵相乘
print("矩阵乘法",np.dot(a1,a2))
运行结果:
[[1 4 7 4 7 7]
[2 5 8 5 8 8]
[3 6 9 6 9 9]]
加: [[ 5 7 9]
[11 13 15]
[14 16 18]]
对位相乘 [[ 4 10 18]
[28 40 54]
[49 64 81]]
矩阵乘法 [[ 39 45 51]
[ 93 108 123]
[147 171 195]]
矩阵信息获取(如均值等)
示例:
import numpy as np
a1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(a1.min())
print(a1.max())
# 可以指定关键字参数axis来获得行最大(小)值或列最大(小)值
# axis=0 行方向最大(小)值,即获得每列的最大(小)值
# axis=1 列方向最大(小)值,即获得每行的最大(小)值
print(a1.max(axis=0))
print(a1.max(axis=1))
# 要想获得最大最小值元素所在的位置,可以通过argmax函数来获得
print(a1.argmax())
运行结果:
1
9
[7 8 9]
[3 6 9]
8