python的numpy模块_python numpy模块

Ŀ¼

回顾一下有哪些数据类型

int/float/str/list/tuple/dict/set

numpy是python一种开源的数值计算扩展库.这种库可用来存储和处理大型矩阵,比python自身的嵌套列表结构要高效的多(该结构也可以用来表示矩阵)

作用:

1.区别于list列表,提供了数组操作、数组运算、以及统计分布和简单的数学模型

2.计算速度快,甚至优于python内置的简单运算,使其成为pandas、sklearn等模块的依赖包。高级的框架如TensorFlow、PyTorch等,其数组操作也和numpy非常相似

矩阵即numpy的np.array对象,创建矩阵就是把==列表==传入np.array() import numpy as np 只有一行

相当于一条直线lis =[1,2,3] lis [1, 2, 3] np.array(lis) array([1, 2, 3]) 有行有列

相当于一个面,里面有多条线,一个列表里装了多个一维arr = np.array([ [1,2,3,4], [5,6,7,8] ]) arr #在pycharm中需要print(arr) array([[1, 2, 3, 4], [5, 6, 7, 8]])

学习numpy的方法使用,先来联想一下list的内置方法使用

1.索引

2.切片

3.长度

4.成员运算

5.for循环

6.其他一些内置方法

比较一下 np.array 和 list 的区别

1.np.array是多维的,list是一维的

2.list对一维数组做一些操作,numpy其实就是对多维做操作 arr =np.array([ [1,2,3,4],[5,6,7,8],[5,6,7,8]]) arr array([[1, 2, 3, 4], [5, 6, 7, 8], [5, 6, 7, 8]]) arr.shape #获得多维数组的行和列,以元组形式表现出来 (3, 4) arr.shape[0] #多维数组的行 3 arr.shape[1] #多维数组的列 4 print(arr.shape) print(arr.shape[0]) arr.shape[1] (3, 4) 3 4 arr.shape arr.shape[1] arr.shape[0] 3

arr.shape ,按照代码运行,直接运行最后一个结果显示处理,用print方法就可以把每一个方法打印出来 lis = [1,2,3,4] #lis[-1] lis[3] 4 arr array([[1, 2, 3, 4], [5, 6, 7, 8], [5, 6, 7, 8]])

arr #jupyter中前面运行的结果可以直接用,如果前面arr未运行生成,就会报错 中括号中加索引,行和列用逗号分开,可以取到数组中的数arr[1,1] # 行和列索引都从0开始,取第2行第2列 6 arr[0,[0,1,2,3]] #第一行,第1,2,3,4列的数 array([1, 2, 3, 4]) arr[0,:] #第一行,第1,2,3,4列的数 array([1, 2, 3, 4]) arr[0:] #没有逗号的时候取出了全部 array([[1, 2, 3, 4], [5, 6, 7, 8], [5, 6, 7, 8]]) arr[:,0] #所有行,第1列的数 array([1, 5, 5]) 有一个多维数组存储的是人的年龄,表格里有200岁以上的年龄arr = np.array([ [1000,2,300,4],[5,600,7,8],[5,6,700,8]]) arr array([[1000, 2, 300, 4], [ 5, 600, 7, 8], [ 5, 6, 700, 8]]) arr>200 array([[ True, False, True, False], [False, True, False, False], [False, False, True, False]]) arr[arr>200] #取出数组中大于200的元素,并一维数组表现出来 array([1000, 300, 600, 700]) lis =[1,2,3,4] lis[0]=9 lis [9, 2, 3, 4] arr array([[1000, 2, 300, 4], [ 5, 600, 7, 8], [ 5, 6, 700, 8]]) arr[1,1]=0 arr array([[1000, 2, 300, 4], [ 5, 0, 7, 8], [ 5, 6, 700, 8]]) arr[0,:]=0 arr array([[ 0, 0, 0, 0], [ 5, 0, 7, 8], [ 5, 6, 700, 8]]) arr = np.array([ [1000,2,300,4],[5,600,7,8],[5,6,700,8]]) arr array([[1000, 2, 300, 4], [ 5, 600, 7, 8], [ 5, 6, 700, 8]]) arr[arr>200]=0 #数组中大于200的数替换成了0 arr array([[0, 2, 0, 4], [5, 0, 7, 8], [5, 6, 0, 8]]) ## 多维数组的合并 arr1=np.array([ [1,2,3,4],[5,6,7,8]]) arr1 array([[1, 2, 3, 4], [5, 6, 7, 8]]) arr2=np.array([ [9,10,11,12],[13,14,15,16]]) arr2 array([[ 9, 10, 11, 12], [13, 14, 15, 16]]) * vstack 和 hstack 只能放一个参数,这个参数必须是容器 np.vstack((arr1,arr2)) #vertical 垂直新的 array([[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12], [13, 14, 15, 16]]) np.hstack((arr1,arr2)) #horizon 水平的 array([[ 1, 2, 3, 4, 9, 10, 11, 12], [ 5, 6, 7, 8, 13, 14, 15, 16]]) np.concatenate((arr1,arr2)) # concatenate 连接的意思,默认垂直合并 array([[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12], [13, 14, 15, 16]])

==在numpy中,为了统一做处理,只要有axis参数的,axis=0就是列,axis=1就是行 np.concatenate((arr1,arr2),axis=1) #ˮƽ array([[ 1, 2, 3, 4, 9, 10, 11, 12], [ 5, 6, 7, 8, 13, 14, 15, 16]]) np.concatenate((arr1,arr2),axis=0)#垂直,默认垂直 array([[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12], [13, 14, 15, 16]]) [i for i in range(10)] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] np.arange(10) array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) np.arange(1,10,2) array([1, 3, 5, 7, 9]) # ones np.ones((3,4)) #默认是浮点型 # np.ones((3,4),dtype=int) array([[1., 1., 1., 1.], [1., 1., 1., 1.], [1., 1., 1., 1.]]) np.ones((3,4),dtype=int) # zeros np.zeros((3,4)) array([[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]]) np.zeros((3,4,5)) #5控制一维,4,5控制二维,3,4,5控制三维 array([[[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]], [[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]], [[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]]]) np.zeros((3,4,5)) array([[[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]], [[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]], [[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]]]) ## eye np.eye(5) #5,5 5行和5列 array([[1., 0., 0., 0., 0.], [0., 1., 0., 0., 0.], [0., 0., 1., 0., 0.], [0., 0., 0., 1., 0.], [0., 0., 0., 0., 1.]]) 两个矩阵对应元素相加

两个矩阵对应元素相减

两个矩阵对应元素相乘

/ 两个矩阵对应元素相除,如果都是整数则取商

% 两个矩阵对应元素相除后取余数

n 单个矩阵每个元素都取n次方,如2:每个元素都取平方arr1 array([[1, 2, 3, 4], [5, 6, 7, 8]]) arr2 array([[ 9, 10, 11, 12], [13, 14, 15, 16]]) arr1+arr2 array([[10, 12, 14, 16], [18, 20, 22, 24]]) arr1*2 array([[ 2, 4, 6, 8], [10, 12, 14, 16]]) arr1 array([[1, 2, 3, 4], [5, 6, 7, 8]]) arr2 array([[ 9, 10, 11, 12], [13, 14, 15, 16]]) np.dot(arr1,arr2.T) array([[110, 150], [278, 382]]) np.linalg.inv(np.dot(arr1,arr2.T)) array([[ 1.19375, -0.46875], [-0.86875, 0.34375]]) arr1 array([[1, 2, 3, 4], [5, 6, 7, 8]]) arr1.max() 8 arr1.min() 1

固定随机数,让它不随机 np.random.rand(3,4) array([[0.20445225, 0.87811744, 0.02738759, 0.67046751], [0.4173048 , 0.55868983, 0.14038694, 0.19810149], [0.80074457, 0.96826158, 0.31342418, 0.69232262]]) np.random.seed(1) #永不随机,固定,如果不加,每运行一次结果都不一样 np.random.rand(3,4) array([[4.17022005e-01, 7.20324493e-01, 1.14374817e-04, 3.02332573e-01], [1.46755891e-01, 9.23385948e-02, 1.86260211e-01, 3.45560727e-01], [3.96767474e-01, 5.38816734e-01, 4.19194514e-01, 6.85219500e-01]]) rs =np.random.RandomState(1) #第二种方法 rs.rand(3,4) array([[4.17022005e-01, 7.20324493e-01, 1.14374817e-04, 3.02332573e-01], [1.46755891e-01, 9.23385948e-02, 1.86260211e-01, 3.45560727e-01], [3.96767474e-01, 5.38816734e-01, 4.19194514e-01, 6.85219500e-01]])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值