1、数组的拼接和裁剪
- t.clip(10,20)把小于10的替换成10,大于20的替换成20
- 竖直拼接,通俗讲就是一个数组在上面,另一个数组在其下面
- 水平拼接,通俗讲就是一个数组在左边,另一个数组在其右边
- np.vbstack(竖直拼接),np.hstack(水平拼接)
###数组的拼接
import numpy as np
t1=np.arange(12).reshape(2,6)
t2=np.arange(12,24).reshape(2,6)
print(t1)
print(t2)
b=np.vstack((t1,t2))##竖直拼接
c=np.hstack((t1,t2))##水平拼接
print(b)
print(c)
2、生成特殊数组
- 全是0的数组
- 全是1的数组
- 对角线是1的方阵
- 获取某个数组的最大最小值的位置
###创建一个对角线是1的正方形数组(方阵)
e = np.eye(3)
print(e)
###获取最大值和最小值的位置
print(np.argmax(e,axis=0))##按照行数,每一行最大的索引组成的数组,本案例[0,1,2]
print(np.argmin(e,axis=1))##按照列数,每一行最小的索引组成的数组,本案例[1,0,0]
##创建一个全是0的数组:
np.zeros((3,4))
np.ones((3,4))
3、numpy中的nan和inf
- nan(NAN,Nan):not a number表示不是一个数字
- inf(-inf,inf):inf表示正无穷,-inf表示负无穷
- 当我们读取本地文件为float时,如有缺失,就会出现nan
- 当做了一个不合适的计算时(比如无穷大减去无穷大),就会出现nan
- 如果一个数字除以0(python会直接报错),出现inf
- nan和inf都是浮点类
- np.nan!=np.nan 两个nan是不相等的,效果和np.isnan()相同
2.通过以上特性,判断数组中nan的个数
np.count_nonzero(t)##判断数组中不是nan的个数
np.count_nonzero(t!=t)
#根据两个nan是不相等的条件 判断false的个数
np.isnan()##判断是不是nan,返回的是布尔型
3.nan和任何数计算都是nan
np.sum(a)
np.sum(a,axis=0)
np.sum(a,axis=1)
举个例子,将有nan的数组的值替换成列均值
def fill_ndarray(t1):
for i in range(t1.shape[1]):##遍历列
temp_col=t1[:,i]##当前的这一列
nan_numbers=np.count_nonzero(temp_col!=temp_col)##判断当前这一列nan的个数
if nan_numbers!=0:#不为零,说明会这一列有nan
temp_not_nan_col=temp_col[temp_col==temp_col]##当前一列不为nan的array
##选中当前为nan的位置,把值赋值为不为nan的均值
temp_col[np.isnan(temp_col)] = temp_not_nan_col.mean()
return t1
if __name__ == '__main__':
t1=np.arange(12).reshape((3,4)).astype("float")
t1[1,2:]=np.nan
print(t1)
t1=fill_ndarray(t1)
print(t1)
4、numpy中的统计函数
求和 | t.sum(axis=None) |
均值 | t.mean(a,axis=None) |
中值 | np.median(a,axis=None) |
最大值 | t.max(axis=None) |
最小值 | t.min(axis=None) |
极差 | np.ptp(a,axis=None) |
标准差 | t.std(axis=None) |
- 这里的标准差除的是N而不是统计学中的N-1和N-2,反应数据地方离散程度(稳定程度)
- axis=0说明在横轴上计算
5、numpy生成随机数
- random.random():根据给定维度生成[0,1)之间的浮点数
- random.randn():根据给定维度(不给维度时为单个数),产生符合标准正态分布的随机数
- random.normal():产生可定义均值和标准差的正态分布随机数
- random.randint(上限,下限):返回给定维度的随机整数
- random.sample(num,3):从指定序列中随机获取指定长度的片段,原有序列不会改变,两个参数,第一个参数代表指定序列,第二个参数代表需要获取的片段长度。
- random.choice():从序列中获取一个随机元素
- random.seed():随机数种子 : 当设置相同的seed,每次生成的随机数相同,不设置seed,则每次会生成不同的随机数,数字一般可随意设置
numpy random官方参考文档:https://docs.scipy.org/doc/numpy/reference/routines.random.html