numpy创建数组
- 常规方法创建
np.array(shape, dtype=None)
#dtype默认情况下为保存序列中对象所需的最小类型
np.arange(start,end,step)
- 特殊方法
np.empty(shape,dtype)
#得到一个指定形状,数据类型且未初始化的数组,即数组元素为随机值
np.zeros(shape,dtype)
np.ones(shape,dtype)
np.eye(n)
#创建一个N*N的矩阵,对角线为1,其余为0
假设存在一个数组t:
1.若要修改数组数据类型可以使用:
t.astype()
2.若要修改浮点数小数位数,可以使用:
np.round(t,2)
#即保留t数组中的小数点后两位
对“轴”的理解
1.在二维数组中:
axis=0指的是行
axis=1指的是列
2.在三位数组中:
axis=0指的是块
axis=1指的是行
axis=2指的是列
3.shape函数的使用
np.shape()
#读取矩阵的长度
t.shape
t.shape[0]
#当t是一位数组时可以使用上述方法求的一位数组元素个数
#当t是一个二维数组则返回一个元组表示行数和列数
#t是三位数组同理
numpy读取和存储数据
1.np.loadtxt
numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False)
#fname文件名
#comments=‘#’行开头为#就会自动跳过
#delimiter=‘,’指定数据间的分隔符号
#skiprows=n跳过前n行
#usecols=(0,2)只使用0,2两列数据
#unpack:为True时会把每一列当成一个向量输出, 而不是合并在一起
numpy索引和切片
1.一位数组
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr[4] #索引(注意是从0开始的)
Out[4]: 4
arr[3:6] #切片
Out[6]: array([3, 4, 5])
arr_old = arr.copy()
#因为数组具有广播性质,所以使用copy函数可以保证更改新数组时原始数组不被更改
2.二维数组
arr1 = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10,11,12]])
arr1[0]
Out[13]: array([1, 2, 3])
arr1[1,2]
#在二维数组取某一个点
Out[14]: 6
#取某一行arr1[1,:]
#取连续多行arr1[1:,:]
#取不连续多行arr1[[0,2,3]]
#取某一列arr1[:,1]
#取连续多列arr1[:,1:]
#取不连续的多列arr1[:,[0,3]]
#取多行多列arr1[0:2,0:2]
#取不相邻的多个点arr1[[0,1],[2,3]]则取到(0,2),(1,3)
numpy数值修改
1.直接修改
arr1 = np.arange(0, 24).reshape(4, 6)
# 使用数组的索引和切片查找值,并修改值
arr1[:, 2:5] = 10
2.布尔索引
# 找到值
# 修改值
arr1[arr1 < 8] = 0
3.三元运算
np.where(条件, x, y)
# 数组中符合条件(布尔索引)的赋值x,不符合的赋值y
4.裁剪
np.clip(a, min, max)
# a 是数组
# min 数组a中元素小于min的用min赋值
# max 数组a中元素大于max的用max赋值
clip和where有返回值,所以需要一个变量去接收
numpy数组的拼接
np.vstack(t1,t2)#竖直拼接
np.hstack(t1,t2)#水平拼接
np.vsplit(t1,t2)
np.hsplit(t1,t2)
数组行列交换
t[[1:2],:]=t[[2:1],:]
numpy生成随机数
numpy的一些函数汇总
# 统计函数
# 求和函数sum
# axis不设置默认对整个数组进行求和计算
sum = np.sum(arr)
# axis=0 沿纵轴
sum_1 = np.sum(arr,axis=0)
# axis = 1 沿横轴
sum_2 = np.sum(arr,axis=1)
# cumsum()也是计算数组求和,不过是计算数组的累计和,包括每次累计的情况
cumsum_1 = np.cumsum(arr)
cumsum_2 = np.cumsum(arr,axis=0)
cumsum_3 = np.cumsum(arr,axis=1)
# mean()计算数组的均值
mean_1 = np.mean(arr)
mean_2 = np.mean(arr,axis=0)
mean_3 = np.mean(arr,axis=1)
# std() 计算数组的标准差
std_1 = np.std(arr)
std_2 = np.std(arr,axis=0)
std_3 = np.std(arr,axis=1)
# var()计算数组的方差
var_0 = np.var(arr)
var_1 = arr.var(axis=0)
var_2 = arr.var(axis=1)
# min(),max()计算数组的最小值和最大值
print(np.min(arr))
print(np.min(arr,axis=0))
print(np.max(arr,axis=1))
# 重复和去重
arr = np.array([[22,33,22],[44,22,66]])
print(np.unique(arr))
print(np.tile(arr,2))
print(np.repeat(arr,2,axis=0))
# 转置和逆矩阵,视图,共轭转置
matr = np.mat('1,2,3,4;4,5,6,7;7,8,9,0')
print(matr.T)
print(matr.I)
print(matr.H)
# sort() argsort() 排序 排序下标
print(np.sort(arr))
print(np.sort(arr,axis=0))
print(np.argsort(arr))
print(np.median(x)) # 对所有数取中值
print(np.median(x,axis=0)) # 沿行方向取中值
print(np.median(x,axis=1)) # 沿列方向取中值
a.ptp()#求极差
t.max()
t.min()
#得到的是该数
np.argmax(t,axis=0)
np.argmin(t,axis=1)
#dedaode是该数所处的位置
numpy中转置函数
t.transpose()
t.T
t.swapaxes(1,0)