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 nparray[(nparray<5)&(nparray>2)]提取设定范围内的元素 #数组值的替换 1.正常替换 切片或者锁定行列来替换!!锁定行列来替换的时候构建一个与替换目标相同的数组!!! 2.条件替换 原理:使用布尔索引来锁定目标元素再用赋值运算来更替目标元素 3.使用where函数替换 np.where(nparray 列子: 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() 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)