注意:符号可能为中文下输入!!!
numpy数组是一个多维数组对象
导入: import numpy as np
数组属性:
建立一个一维数组
ar=np.array([1,2,3,4,5,6]) ### 数组没有“,”分隔[1 2 3 4 5 6]
ar.adim ###数组的秩(数组维度的个数)
ar.shape ###数组的维度 对于n行m列的数组,shape(n, m)
ar.size ####数组元素的总数 对于n行m列的数组,size=n*m
ar.dtype ###数组中元素的类型
ar.itemsize ###数组中每个元素的字节大小 int32为4个字节,
float64为8个字节
创建数组
array()函数 括号内可以是列表、元组、生成器
1.通过range
ar1=np.arange(10)
ar2=np.array([range(10)])
注意:
ar3=np.array([[1,2,3,4,5,6],['a','b','c','d','e','f']])
此时ar3.dtype 为str
ar4=np.array([[1,2,3,4,5,6,7],['a','b','c','d','e','f']])
当列表长度不相等时,数组转化为一维数组
2. linspace(开始,停止,num=,endpoint=True)
返回在[开 始,停止]上计算的num个均匀间隔的样本
ar5=np.linspace(10,20,num=20)
endpoint=True 即包含20,False则不包含20
retstep =True 返回类型为元组,返回原数组以及step
即:ar5[0]为原数组;ar5[1]为step
3.zeros()/zeros_like(),ones(),ones_like()
ar6=np.zeros((2,5),dtype=) 创建一个2行5列数值均为0的二维数组
ar=np.array([1,2,3,4,5])
ar7=np.zeros_like(ar) 生成一个和ar同样大小但是数据均为0的数组
ones与ones_like()与zeros()和zeros_like()类似,ones填充1
4.eye()
np.eye(5) ###创建一个正方的单位矩阵,对角线值为1, 其余为0
numpy通用函数:
1.数组形状(生成新的数组,并不更改原数组):
ar1=np.array([[1,2,3,4,5,6],[7,8,9,10,11,12]])
ar1.T ###数组的转置
ar1.reshape(6,2) ###更改行数与列数 **注意**:size必须相同
np.reshape(ar1,(6,2))
np.resize(ar1,(5,6)) #### 5*6>12 但是将ar1中数据排序,填充;;;
np.resize(ar1,(2,4)) ####2*4<12 取ar1中前8个进行填充
ar.resize(2,8) ###更改原数组
np.resize(ar,(2,8)) ###生成新数组
2.数组的复制(深拷贝与浅拷贝):
ar2=ar1 ar2,ar1 指向同一个对象
ar2=ar1.copy() 新建一个对象,用ar2指向
3.数据类型的转换
ar1=ar.astype(“数值类型”)
4.数组堆叠:
a=np.arange(5)
b=np.arange(5,10)
np.hstack((a,b)) ####数组的横向连接
np.vstack((a,b)) ###数组的竖向连接 **注意**:a,b列数相同,否则报错
np.stack((a,b),axis=1)
5. 数组拆分:
np.hsplit(ar,2) ###横向拆分
np.vsplit(ar,2) ####纵向拆分
6. 数据简单运算:
+ - * / **
ar.mean() ###求平均值
ar.max() ###求最大值
ar.min() ###求最小值
ar.std() ###求标准差
ar.var() ###求方差
ar.sum() ###求和 axis=0 按列求和 axis=1按行求和
ar.sort() ###默认升序,修改原数组
索引及切片:
一维数组类似list
ar=np.arange(10)
ar[4]
ar[:3]
ar[::2]
二维数组:
ar=np.arange(16).reshape(4,4)
ar[2] ##第三行
ar[2][2] ##第三行第三个值
ar[1:3] ## 第二行和第三行
ar[2,2] ## 第三行第三列所对应的数值
ar[行,列]
布尔值索引及切片:
ar=np.arange(12).reshape(3,4)
保留为True的值
ar[ar>5]
数组索引及切片的值更改、复制:
ar[5]=100 ###将第6行设置成100
ar[:,5]=100 ### 将第6列设置成100
b=ar.copy() 深拷贝 和python内存管理有关系
numpy随机数
np.random.normal(size=(4,4,)) ###生成标准正态分布的4*4二维数组
np.random.rand(d0,d1.......) ###生成一个[0,1)之间的随机浮点数N维浮点数组 ----均匀分布
np.random.rand(2,4) ###生成2行4列的浮点数数组
np.random.randint(low,high=None,size=None) ###生成一个整数或N维整数数组
若high不是None时取[low,high)的随机整数,否则取[0,low)之间的随机整数