一、numpy简单运算数组运算--可以理解为矩阵运算

dtype属性可以显示数据类型,并可以通过其指定数据类型可以通过astype方法调整数据类型由bool类型变成int类型通过numpy生成小数数组,并使用np.round()保留特定位数小数np.arrange(12)-->生成一维数组np.array([[1,2,3],[4,5,6]])通过t.shape可以看出变量t是几维数组

t.reshape 可以帮助我们修改形状,可以把一维变成二维、三维等一维变二维一维变三维

在三维数据中,形状是(2,3,4)的,2表示数据分为上下两块,3表示3行,4表示4列

当然,reshape也可以三维变二维,可以看到reshape是直接有返回值的,并不会改变t3本来的形状。上一张图有赋值操作,所以改变了t3的形状。三维变二维

三维变一维,t3.reshape((24,)),reshape括号中只能填一个数,填2个数还是会变成二维数组三维变一维如果对数组内容未知,如何变成一维呢?①使用t.shape[0],t.shape[1]求解;②使用t.flatten()方法求解:按照行展开。方法①方法②数组和数的计算

加:对数组内每个数组均作相加运算,这是numpy的广播机制

减乘除:均有广播机制/0 出现warning,程序仍可以执行--->0/0=nan 1/0=inf

其中,NAN表示not a number,不是一个数字;inf表示无限、无穷的数组和数组的计算

对应相同维度相同形状的:

加:对应位置相加

减乘除:均为对应位置相加

对应不同维度的、相同数据宽度的:

二维对一维:二维数组中的每行或者每列都与一维数组做运算每行每列

按照行、按照列都不能计算的形状不同的数组,会报错。如果两个数组的后缘维度(即从末尾开始算起的维度) 的轴长度相符或者其中一方的长度为1,则认为它们是广播兼容的。广播会在缺失或长度为1的维度上进行。

二、 轴

一维数组、二维、三维

对于一维数组,只有一个0轴;对于二维数组,shape(2,2),有0轴和1轴;以此类推,三维数组有0,1,2三轴。

如何计算二维数组的的平均值,按照axis=0来计算


Numpy读取数据

Pandas读取本地数据更加强大。

如何读取数据

CSV:逗号分隔文件


Csv读取文件


代码:np.loadtxt()


默认逗号分隔,默认是科学计数法表示

数组的转置

多种方法可以实现数组的转置

t.T 这是个属性

t.swapaxes(1,0) 交换轴

t.transpose() 转置


三、索引 切片

取行、取列

取行列的方法类似;对于不连续的多行或多列,通过[]括起来即可。


如何取多个不相邻的点呢?

numpy中数值的修改简单修改,对取出来的区域直接赋值即可如何取小于10的值【利用布尔索引】

t2<10-->在数组中符合条件的会显示True

通过这样,可以取出符合条件的数值,并进行值得修改

t2[t2<10] = 10三元运算符:np.where(t<10,0,10)

t<10的值赋值为0 t>=10的值赋值10clip操作(裁剪):如何做到 小于10的替换为10 大于18的替换为18

通过t.clip(10,18)

其中,nan是什么?nan是一个浮点类型的数据。

可以通过以下代码:

import numpy as np
t2 = t2.astype(float) #把t2的interger数组转换为float类型
t2[3,3] = np.nan

即可把数组中某值变成nan

四、numpy中的nan和infnan:not a number 表示不是一个数字nan的特性

nan和nan不相等

可以利用两个nan不相等的性质,判断数组中的nan的个数

np.count_nonzero(t) -->用来判断数组中不为0【非0---> True】的数值个数
np.count_nonzero(t!=t) --->用来判断数组中为NAN的数值个数
np.isnan(t) --->判断数组中为NAN的数值 效果和t!=t类似

所以也可以用np.count_nonzero(np.isnan(t))nan和任何值计算都是nannp.sum(t,axis=0) ---->按照0轴方向计算求和、按列方向求和【按照0轴方向求和,所得结果形状和0轴方向形状相同】

np.sum(t,axis=1) ---->按照1轴方向计算求和、按行方向求和

np.sum(t)----->没有指定轴,默认求数组所有元素的和在一组数据中,把缺失数据nan不能全部替换为0。一般方式为把缺失的数值替换为均值或者中值,或者直接删除有缺失值的一行(pandas)

numpy常用统计函数把数值中的nan替换成均值或中值
import numpy as np
t1=np.arange(12).reshape(3,4).astype("float")
t1[1,2:] = np.nan
# 然后判断当前列是否存在nan,并利用均值填充
def fill_ndarray(t11):
for i in range(t11.shape[1]): #取每列
temp_col = t11[:,i] #当前一列
nan_num = np.count_nonzero(temp_col!=temp_col)
if nan_num!=0:
temp_not_nan_col = temp_col[temp_col==temp_col]
temp_col[np.isnan(temp_col)] = temp_not_nan_col.mean()
 return t11替换前替换后

五、小结如何选择一行或多行的数据?

切片或索引,逗号前面是行、逗号后面是列的选择。如何给选取的行或者列赋值?

t[2:,3] = 3 ---->通过索引选中某值后,再赋值如何把大于10的值替换为10?

通过布尔索引:t[t>10] = 10np.where如何使用?

三元运算符:np.where(t>10,20,0) 把t中大于10的替换成20,其他的替换为0np.clip如何使用?

t.clip(10,20) ----> 把小于10的替换为10 大于20的替换为20如何进行转置?

t.T
t.transpose()
t.swapaxes(1,0)读取本地文件

np.loadtxt(file_path,delimiter,dtype)np.nan和np.inf是什么?

nan-->不是一个数字
np.nan != np.nan
np.count_nonzero(np.nan!=np.nan)-->统计数组中有多少个nan
np.isnan(t) -->统计数组中有多少个nan,效果一致
inf---->表示无穷常用的统计函数有几个?
t.sum(axis=0) ---> 在行方向进行计算,计算每列的和
t.mean(axis=0) --->计算每列的均值
np.median(t,axis=0) ----> np提供的全局方法
t.max()/ t.min() --> 最大/最小值
np.ptp --> 计算极差

t.std ---> 标准差 ---> 反映数据的稳定程度如何绘制直方图?

1)首先寻找组距:计算一组值的最大值、最小值

2)设置大约的组距d,组数bit_nums=(最大值-最小值)//组距

3)直方图需要导入文件

from matplotlib import pyplot as plt

4)通过matplotlib组件开始画图

plt.figure(figsize=(20,8),dpi=80)
plt.hist(一组数据,组数)
plt.show()

5)可以通过布尔索引,去掉一些极端的值,组距同时也要根据需要更正如何通过散点图绘制两个变量x和y之间的关系?

plt.figure(figsize=(20,8),dpi=80)
plt.scatter(x,y)
plt.show()

此时如果需要去除一些极端的数值,需要从x,y所属的数组进行选择;否则可能不会一一对应