numpy
- 入门操作
- 生成特殊的矩阵
- 随机数
- numpy的运算
- numpy的切片
- 数值的堆叠
- 排序
- 帮助
入门操作
- 引入包: import numpy as np
- 创建矩阵: vector= numpy.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
- 打印矩阵信息:
1.打印行列:vector.shape
2.打印类型:type(vector)或者vector.dtype
3.查看矩阵的维度:vector.ndim - 矩阵的bool类型的判断(以==为例其他的类似)
matrix = numpy.array([
[5, 10, 15],
[20, 25, 30],
[35, 40, 45]
])
matrix == 25
结果等于:
array([[False, False, False],
[False, True, False],
[False, False, False]])
生成特殊的矩阵
- 按顺序生成指定的矩阵
a = np.arange(15)
------------------
结果等于:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
- 变换矩阵为指定的形状reshape(行数,列数)
b = a.reshape(5,3)
print(b)
--------------------------
结果是:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14]])
- 零矩阵:np.zeros((行数,列数))
- 全1矩阵:np.ones((行数,列数))
- 等差矩阵:np.arange(起始值,终止值,公差).reshape(行数,列数)
- 对角阵:np.eye(3)三阶单位阵
np.arange( 10, 30, 5 ).reshape(2,2)
---------------------------------
结果是:
array([[10, 15],
[20, 25]])
- 随机矩阵:np.random.random((行数,列数))
- 数字切片组成的矩阵:np.linspace( 0, 2, 100 ),表示从0到5,一个分成100个数。
- z = np.random.randint(0,3,(2,10)) 只有0,1,2构成的2行10列的矩阵
随机数
- numpy.random.randint函数
# numpy.random.randint(low, high=None, size=None, dtype='l'):生成一个整数或N维整数数组
# 若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数,且high必须大于low
# dtype参数:只能是int类型
print(np.random.randint(2))
# low=2:生成1个[0,2)之间随机整数
print(np.random.randint(2,size=5))
# low=2,size=5 :生成5个[0,2)之间随机整数
print(np.random.randint(2,6,size=5))
# low=2,high=6,size=5:生成5个[2,6)之间随机整数
print(np.random.randint(2,size=(2,3)))
# low=2,size=(2,3):生成一个2x3整数数组,取数范围:[0,2)随机整数
print(np.random.randint(2,6,(2,3)))
# low=2,high=6,size=(2,3):生成一个2*3整数数组,取值范围:[2,6)随机整数
结果:
0
[0 0 0 0 1]
[3 2 4 4 4]
[[0 1 0]
[0 0 0]]
[[3 5 2]
[2 2 5]]
- 随机种子
- np.random.RandomState → 随机数种子,对于一个随机数发生器,只要该种子(seed)相同,产生的随机数序列就是相同的
rng = np.random.RandomState(1)#随机数种子
a=rng.rand(3)#生成三个随机数
numpy的运算
假设有两个矩阵A和B
- 加法:A+B
- 减法:A-B
- 乘法:
- 1,对应位置相乘:A*B
- 2.矩阵的乘法:A.dot(B),或者为dot(A,B)
- 开方:A**2
- 开根号: np.sqrt(A)
- 最大值:.max()
- 最小值:.min()
- 平均值: mean()
- 标准差:: std()
- 方差: var()
numpy的切片
- 按照列切片:hsplit(矩阵名称,(切片方式))
a = np.floor(10*np.random.random((2,12)))#随机生成一个2x12的矩阵
print(a)
print("----------------------------")
print(np.hsplit(a,3))#一个参数:将矩阵按照列,平均切成3份
print("----------------------------")
print(np.hsplit(a,(3,4))) # 多个参数:[0-2]切一刀,[3]切一刀,[4-12]切一刀,注意按照下标,在对应位置切刀。
print("----------------------------")
- 按照行切片:vsplit(矩阵名称,(切片方式))
X:Y选择X到Y-1 ,X:Y:Z 表示从X开始到Y结束,以Z为公差进行切分选择
- a[0:1,0:2] 数组a中选择第0行,第0、1列
- a[1::2,::2] = 1 数组a中选择1,3,5…行,选择0,2,4…列
数值的堆叠
- 方法一:
numpy.hstack(tup):水平(按列顺序)堆叠数组
numpy.vstack(tup):垂直(按列顺序)堆叠数组
# 数组堆叠
a = np.arange(5) # a为一维数组,5个元素
b = np.arange(5,9) # b为一维数组,4个元素
ar1 = np.hstack((a,b)) # 注意:((a,b)),这里形状可以不一样
-------------------------------------------------------
结果:
[0 1 2 3 4] (5,)
[5 6 7 8 9] (5,)
[[0 1 2 3 4]
[5 6 7 8 9]] (2, 5)
方法二:
numpy.stack(arrays, axis=0):沿着新轴连接数组的序列
a = np.arange(5)
b = np.arange(5,10)
ar1 = np.stack((a,b))
ar2 = np.stack((a,b),axis = 1)
---------------------------------------------------------------
结果:
[[0 5]
[1 6]
[2 7]
[3 8]
[4 9]] (5, 2)
排序
np.sort(a,axis=?) 函数的作用是对给定的数组的元素进行排序
a:需要排序的数组
axis:指定按什么排序,默认axis = 1 按行排序, axis = 0 按列排序
a = np.array([[4, 3, 5], [1, 2, 1]])
print(a)
b = np.sort(a, axis=1)
print("------------")
print(b)
----------------------------------------------------------------------------
结果:
[[4 3 5]
[1 2 1]]
------------
[[3 4 5]
[1 1 2]]
帮助
help(内容)