numpy学习总结

1、如何调用Numpy:

 

import numpy as np

 

2、ndarray的生成方式:

1、使用array直接从原有数据类型转换:

list = [1,2,3,4]

nd = np.array(list) //转换list数组

list2 = [[1,2],[3,4]]

nd2 = np.array(list2)

 

2、随机数生成:

nd3 = np.random.random([3,3]) //生成一个3*3的随机矩阵

print(nd3)

np.random.seed(154) //设置随机数的种子

nd4 = np.random.random([2,3])

np.random.shuffle(nd4) //打乱数组顺序

print(nd4)

 

3、特殊矩阵生成:

nd5 = np.zeros([3,3]) //生成全是0的矩阵

nd6 = np.ones([3,3]) //生成全是1的矩阵

nd7 = np.eye(3) //生成指定长度矩阵,对角值为1

nd8 = np.diag([1,2,3]) //生成对角矩阵,矩阵长宽为数组长度,对角值为数组对应位置值

nd27 = np.linspace(-1,1,3) //生成一个(-1,1)的数组,元素个数为3,所以步长为(1-(-1)+1)/3,也就是加1关系,值为[-1,0,1]

nd28 = np.random.normal(0,0.5,[5,5]) //生成一个正态分布的值,以0为中心,偏差值为0.5,生成格式为5*5的矩阵

4、利用arange生成矩阵:

nd9 = np.arange(11) //从0开始,到11-1停止,每次迈进一步

nd10 = np.arange(2,10,0.5) //从2开始,到10-1停止,每次迈进0.5步

 

5、通过random.savetxt和random.loadtxt保存读取本地文件获得:

nd11 = np.random.random([2,3])

np.savetxt(X=nd11,fname='./test2.txt')

nd12 = np.loadtxt('./test2.txt')

 

3、ndarray存取元素:

1、一般的选取:

nd13 = np.random.random([5,5])

nd13[4] //将第4+1行取出来

nd13[2:4] //从第2+1行取到5-1行

nd13[1:4:2] //从第1+1行取到5-1行,并从第一个开始每隔2-1行取一次

nd13[::-2] //从最后一行开始倒序,并从第一个开始每隔2-1行取一次

nd13[2:4,1:3] //取从第2+1行开始,到5-1行的第1+1列到4-1列

nd13[(nd13<0.5)&&(nd13>0.2)] //将值小于0.5但是大于0.2的筛选出来

nd13[1:3:] 或者nd13[:2:4] //取2到3行或者取3到4列

 

2、利用random.choice随机排序抽取:

nd14 = np.arange(5)

nd15 = np.random.choice(nd14,size=(3,4),replace=False,p=[0.1,0,0.6,0.4,0.2]) //随机从nd14抽取指定矩阵的值,并设定不允许重复,在p中规定每个数值可能抽到的概率

 

3、矩阵操作:

nd16 = np.arange(9).reshape([3,3]) //修改一个一维数组为二维矩阵

nd16 = np.transpose(nd16) //将nd16的x与y轴对调,所对应的值也对调

nd16 = np.transpose(nd16.reshape([1,3,3]),(1,0,2)) //将nd16修改为三维数组,并把[1,3,3]改为[3,1,3]的数据结构

 

4、数据合并和展平:

1、一维合并:

nd17 = np.arange(4)

nd18 = np.arange(4,8)

nd19 = np.append(nd17,nd18) //拼接

nd20 = np.concatenate([nd17,nd18]) //另外一种拼接

 

2、多为数组合并:

nd21 = np.arange(4).reshape(2,2)

nd22 = np.arange(4).reshape(2,2)

nd23 = np.append(nd21,nd22,axis=0) //axis=0是按行合并,1是按列合并,None是先拉平再合并

 

3、展平矩阵:

nd24 = np.arange(6).reshape(2,-1) //二维为2,一维拉平

print(nd24.ravel('F')) //按照列拉平为一维

print(nd24.revel()) //按照行拉平为一维

 

5、矩阵加法运算:

nd25 = np.arange(4).reshape(2,2)

nd26 = np.arange(4).reshape(2,2)

print(nd25+nd26) //如果两个数组长宽不一样会进行选择扩充,类似3.2的随机选取然后在运算

 

6、后缀操作

nd29 = np.random.random((2,5))

print(nd29.shape) //输出各维度的个数即(2.5)

print(nd29.reshape(5,2)) //修改维度为(5,2)形,需要注意修改前后的各维度个数相乘的值要一样

print(nd29.dtype) //返回数据的数据类型,即float64

print(nd29.astype(np.float32).dtype) //修改数据类型为float32,即返回float32

print(nd29.ndim) //返回维度,这里返回2

 

疑问:

1、list和array的区别:

首先是python两大数据类型,list和array区别:

list 看起来是数组其实什么值都可以存,他可以理解为一个指针数组,因为存的实际上是指针,所以塞值的什么地址给指针都合情合理。

array 则是规范化的list,要求存的数据必须类型是一致的,而他只能保存基础的数据类型,比如整数、浮点数、字符。

2、np.random.random和np.random.rand的区别

两者都是生成一个(0,1)之间的随机数,他们之间的区别是传参不同,random只接受元组,即合起来的数据,而rand是接受分开的数据。直观的例子就是:

random((3,3))

rand(3,3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值