python数据处理numpy库学习笔记

import numpy as np

注:a1-an表示数组,m表示常数,nparray表示数组

一.数组的各种建立方式

import numpy as np

a1=np.array([1,2,3,4,56])

a2=np.arange(start,end,step)

a3=np.random.random((n,m))(n行m列的数组,元素范围为0-1)

a4=np.random.randint(a,b,size=(n,m)(n行m列,数据范围为a-b的整形数组)

a5=np.ones((n,m))(n行m列都为1的数组)

a6=np.zeros((n,m))(n行m列都为0的数组)

a7=np.full((n,m),a)(n行m列都为a的数组)

a8=np.eye(a)(a行a列对角线为a的数组)

二.np.array([],dtype='数据类型'),

a1=np.array([],dtype=int8)

a2=np.array([12,13,1,2,3,4],dtype='i1')

三.数组的操作:

nparray.ndim(数组维度)

nparray.shape(数组形状)

nparray.reshape(,)(重塑数组形状但是要保持数组元素数目相同!!!b不改变原来数组值)

nparray.flatten(数组扁平化,都拆分为一维数组,不改变原来数组值)

nparray.size(获取数组元素个数)

nparray.itemsize(用于获取数组中每一个元素所占的字节*8=dtype)

四.数组的索引与切片

一.一维数组的索引与切片

a1=np.arange(10)

1.索引:print(a1[a])索引a[n]的值

2.进行切片操作

a1[n:m+1]获取n到m的值

3.使用步长

a1[start:end:step]

4.使用负数作为索引

a1[-1]获取最后一个值

二维与二维以上数组

也是通过括号来索引和切片,在中括号中,使用逗号进行分割,逗号前为行后为列,如果多维数组中只有一个值则这个值代表列

a1=np.randmo.randint[0,10,size=(3,4)]

a2[0](第一行)

a2[1:3]第二到三行

a2[[0,2,3]]不连续的三行!!!

a2[n,m]n行m列的元素

a2[[a,b],[c,d]]获取元素[a,c]和[b,d]

获取连续的值时用切片

a2[a:c,b:d]

a2[:,m]获取第m行数据

#布尔索引

nparray[nparray<m]提取数组中小于m的数,构成一维数组

nparray[(nparray<5)&(nparray>2)]提取设定范围内的元

#数组值的替换

1.正常替换

切片或者锁定行列来替换!!锁定行列来替换的时候构建一个与替换目标相同的数组!!!

2.条件替换

原理:使用布尔索引来锁定目标元素再用赋值运算来更替目标元素

3.使用where函数替换

np.where(nparray<m,a,b)(如果nparray中的元素小于m则元素值被更替为a否则被更替为b。!!a,b这个两个参数必须同时存在,要么传要么不传!!)

列子:

a1=np.random.randint(0,10,size(3,4))

result=np.where(a1<2,2,3)

#数组的广播机制

1.1数组与数的运算

a1+-*/m

1.2数组与数组的运算

1.2.1两个数组shape一致:每一个对应位置的元素哦都独立进行相应的运算

1.2.2两个数组shape不一致:如果轴维度或者最后面的维度为一则可以运算,每一行列都运算,或者末尾维度一致也可以

例子:a1[1,2]+a2[3,4]  a1[2,1]+a2[3,4]   a1[3,2]+a2[8,3,2]!!!

#数组的形状操作

1.nparry.reshape:将数组改变为指定的形状但是并不会改变原来数组的形状,只是返回改变后的数组形状

2.nparry.resize:将数组改变为指定的形状,并且会修改数组本身形状。

3.nparry.flatten和ravel都是扁平化数组,都不会对原来的数组造成影响,前者返回的是一个拷贝,修改时不会修改数组本身;后者可以理解为返回一个引用,对数据修改会修改数组本身。

#数组的叠加

1.np.hstack([a1,a2])代表在水平方向叠加,行要保持一直!!

2.np.vstack([a1,a2])代表在垂直方向叠加,列要保持一直!!

3.np.concatenate([a1,a2],axis=?)可以手都设置axis在哪个方向叠加,如果axis=0,代表在水平方向叠加,如果等于1垂直方向叠加

如果axis=None则先进行叠加再转换位一维数组

#数组的切割

1.np.hsplit(a1,a)行切割,行数必须能被a整除

2.np.vsplit(a2.a)列切割,列数必须能被a整除

3.np.hsplit(a1,(a,b, , ))在a前竖切,b前竖切.....以此类推

4.np.vsplit(a1,(a,b, , ,))规则同3

5.np.split/array_split(a1,a,axis=?)自定义轴数平均切

#数组的转置

1.a1.T返回转置的结果,顺时针旋转

2.a1.transpose()

3.两者都不会影响原来数组,后者返回一个视图,修改时会对原来数组造成一个影响

#数组的拷贝

1.不拷贝,只是一个赋值

2.浅拷贝,只是拷贝了栈区内存空间变量,但是两个变量都是指向堆区同一个数组内存空间a2=a1.view()

3.深拷贝,将栈区的内存空间拷贝一份,堆区内存空间也拷贝一份a2=a1.copy()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值