#基础操作
np.array(object,dtype,ndmin):object指list、tuple等对象,ndmin指最小维度
数组的全称是n维数组
np.array([1,0.2,1.25,45.0]) #手动输入
list1=[1,2,6]
list2=[2.0,6.2,1]
np.array(list1) #列表变数组
np.array(list1,list2) #合并两个列表变为一个数组
x = np.array([....]),x.shape #查看数组形状
(4,) 表示是一维数组,长度为4
(2,3) 表示是二位数组,长度为2行3列
以此类推
x.reshape(4,5) 将x转换为4行5列的二维数组
x.ravel() 将二维数组降至一维数组
x.ndmin 查看数组的维度
x.size 查看数组中的元素数量
x.dtye 查看数组中的元素类型
x = np.arrange(10) 创建0-9的整数数列
x=np.arrange(1,18,3) 创建1-18且步长为3的整数数列
arrange([start],stop,[step],dtype=None) [start,stop)
其中[]表示可以省略
x = np.linspace(0,100,51) 创建一个0-100,元素个数为51的等差数列
linspace(start,stop,num,endPoint=true) endPoint表示是否包含最后一个stop
x = np.logspace(start,stop,num,endPoint=True,base=10)
生成一个base^start--base^stop范围内的等比数列
x = np.zeros(shape,dtype = None,order = 'C')
x = np.zeros(8) 创建一个一维的零数组,数组的元素个数为8
x = np.zeros((5,7)) 建一个5行7列的零数组
x = np.zeros_like(x1) 创建一个与x1形状相同的零数组x
x = np.ones(shape,dtype = None,order = 'c')
与zeros基本相同,只不过创建的是一个1数组
x = np.empty(shape,dtype = float , order ='c') 创建全是空值是数组
x = np.empty_like(prototype ,dtype)
x = full(shape,fill_value,dtype,order = 'c') fill_type表示填充值
x= eye(N,M,k=0) 创建一个对角线全是1的数组
当k>0 时,全1对角线往上偏
当k<0 时,全1对角线往下偏
N表示行数,M表示列数(一般情况下M=N)
x = np.random.randn(d0,d1,d2,d3......dn)
生成标准正态分布之间的随机数,d表示维度
x = np.randon.randn(5) 生成5个在标准正态分布的随机数
#数组的相关功能
多维数组之间的操作
x1 + x2 , np.sin(x),x * 3,x+1,np.exp(x)
2.索引
基础索引
跟普通pyhton列表一样,通过下标进行访问
x[-3:] 从倒数第三个数一直到最后
x[5,2] 访问二维数组的5行2列的元素 (几行几列指的是下标,下标从0开始)
x[:2, 2:4] 筛选第3行往前(最开始到第二行)的所有行与第2,3列的交点元素
x[2:4] = 666 可以通过这种方式进行赋值
神奇索引
其实就是:用整数数组进行的索引,叫神奇索引
x[[3,4,7]] 访问x中下标为3,4,7的元素(x是一维数组时)
x[[0,2]] 访问第一行到第二行的所有元素(x是二维数组),注意,完整写法是X[[0, 2], :],列可以省略,但是行不能省略,即X[:, [0,2,3]] 访问1,3,4列的所有行
x[[0, 2, 3], [1, 3, 4]] 返回的是[(0,1), (2,3), (3,4)]位置的数字
布尔索引 返回的是一个bool数组(新数组)
使用 != 或 ~ 对条件进行否定,与用“&” , 或用“|”
x>5 返回x中每一个元素是否大于5的结果
x[x>5] 返回x中大于5的元素
x[x<=5] = 0
x[x>5] = 1
以上两步是将数组进行0-1化处理
x[:, 3]>5 把第3列大于5的行筛选出来(x是二维数组)
x[x>5] 返回二位数组x中大于5的所有元素,但返回的是一维的数组
因为x>5 返回是一个true还是false的二维下标,再用x[]时,就相当于下标索引
condition = (x%2==0) | (x>7)
x[condition] 输出x中大于7的数或者偶数
np.where(条件) 满足条件的元素的索引值