一、numpy的属性
import numpy as np
此语法导入了numpy库,并且给numpy起了一个别称np用来方便以后的使用。
下面定义一个矩阵:
array=np.array([[[1,2,3],
[4,5,6],
[7,8,9]]])
print(array)
执行:
print(array.ndim)
可以查询到矩阵,输出结果为3。还有一些操作如下:
print(array.shape)#输出矩阵形状
print(array.size)#输出矩阵大小
print(array.dtype)#显示矩阵的元素类型
二、创建array
import numpy as np
a=np.array([1,2,3],dtype=np.int32)#创建一个内容为1,2,3,数据类型为整形32位的数组
print(a.dtype)
创建一个二维矩阵,注意中括号数目:
d=np.array([[1,2,3],
[4,5,6]])#创建一个二维矩阵
print(d)
生成一个2行3列的零矩阵:
zero=np.zeros((2,3))
print(zero)
生成3行4列全为1的矩阵:
one=np.ones((3,4))
print(one)
生成3行2列每个元素全都接近0的矩阵:
empty=np.empty((3,2))
print(empty)
生成4-11的一维数组:
e=np.arange(4,12)
print(f)
reshape()方法变换矩阵形状:
h=np.arange(8).reshape(2,4)
print(h)
三、numpy的运算
矩阵按位相加:
import numpy as np
arr1=np.array([[1,2,3],
[4,5,6]])
arr2=np.array([[1,1,2],
[2,3,3]])
print(arr1)
print(arr2)
print(arr1+arr2)
结果:[[2 3 5] [6 8 9]]
另外:
print(arr1-arr2)#arr1减arr2
print(arr1*arr2)#arr1乘arr2
print(arr1**arr2)#arr1为底数,arr2为幂数
print(arr1/arr2)#按位相除
print(arr1%arr2)#取余
print(arr1//arr2)#取整
print(arr1+2)#矩阵内所有元素都加2
print(arr1*10)#所有元素都乘10
判断矩阵内元素大小,结果保存在arr3中:
arr3=arr1>3
print(arr3)
矩阵的乘法:
arr4=np.ones((3,5))#创建arr4
print(arr4)
np.dot(arr1,arr4)
转置矩阵:
print(arr1)
print(arr1,T)#矩阵转置
四、随机数生成以及矩阵的运算
生成3行2列从0到1的随机数:
import numpy as np
sample1=np.random.random((3,2))
print(sample1)
生成3行2列符合标准正态分布的随机数:
sample2=np.random.normal(size=(3,2))
print(sample2)
在0-10范围内生成3行2列的随机整数:
sample3=np.random.randint(0,10,size=(3,2))
print(sample3)
对sample1矩阵操作:
np.sum(sample1)#对矩阵所有求和
np.min(sample1)#求矩阵里最小的元素
np.max(sample1)#求矩阵里最大的元素
np.sum(sample1,axis=0)#对列求和
np.sum(sample1,axis=1)#对行求和
np.argmin(sample1)#求最小值索引
np.argmax(sample1)#求最大值索引
print(np.mean(sample1))#求矩阵平均值
np.median(sample1)#求中位数
np.sqrt(sample1)#求开方结果
对矩阵元素进行排序:
sample4=np.random.randint(0,10,size=(1,10))
print(sample4)
np.sort(sample4)#对仅有的一行排序
np.sort(sample1)#对矩阵每一行进行排序
np.clip(sample4,2,7)#sample4里元素小于2变为2,大于7变为7
五、numpy的索引
首先建立2-13的一维数组:
arr1=np.arange(2,14)
print(arr1)
执行结果如下:
[2 3 4 5 6 7 8 9 10 11 12 13 14]
那么有:
print(arr1[2])#第二个位置数据
print(arr1[1:4])#提取第1-3位置数据
print(arr1[2:-1])#第2到倒数第二个位置数据
print(arr1[:5])#前五个数据
print(arr1[-2:])#最后两个数据
对于矩阵:
arr2=arr1.reshape(3,4)#把arr1变为3行4列的矩阵
print(arr2)
print(arr2[1])#输出矩阵第一行
print(arr2[1][1])#输出第一行第一列数据
print(arr2[:,2])#输出所有行里的第二列,注意逗号
for i in arr2:#迭代行
print(i)
for i in arr2.T:#迭代列
print(i)
for i in arr2.flat:#扁平化,一个一个元素迭代
六、array的合并
两个一维数组合并为矩阵
import numpy as np
arr1= np.array([[1,2,3])
arr2=np.array([[4,5,6])
arr3=np.vstack((arr1,arr2))#垂直合并
print(arr3)
arr4=np.hstack((arr1,arr2))#水平合并
print(arr4)
还有一种方式:
arr=np.concatenate((arr1,arr2),axis=0)#0代表垂直合并,1代表水平合并,注意合并的维度要相同
print(arr)
增加维度:
arr1.T
print(arr1.T)#注意一维的array不能转置,此处转置后结果和转置前一样
arr1_1=arr1[np.newaxis,:]#增加维度,变为1行3列的矩阵
print(arr1_1.T)#此处可以转置
arr1_2=arr2[:,np.newaxis]#增加维度为3行1列的矩阵
print(arr1_2)
arr1_3=np.atleast_2d(arr1)#把小于2维的矩阵转变为2维,大于等于2维的矩阵保持不变
print(arr1_3)
七、array的分割
import numpy as np
arr1=np.arange(12).reshape((3,4))
print(arr1)
arr2,arr3=np.split(arr1,2,axis=1)#竖直方向切割,分成两份
print(arr2)
print(arr3)
arr4,arr5,arr6=np.split(arr1,3,axis=0)#水平方向切割,分成3份