numpy
修改数组中的值
(np.array(range(54)).reshape((6,9))为例)
·可通过赋值语句索引后重新赋值

·通过判断索引后群体赋值(布尔索引)
布尔索引
通过判断语句数组会自动进行判断,显示判断数组,数组中数据类型为numpy.bool_型。我们可以通过判断语句来判断数据符合条件与否即判断数组中数据的值来进行有需求的索引。

numpy中的三元运算符
语法:
import numpy as np
np.where(判断条件,成立赋值,不成立赋值)
该方法用于数组的全体判断赋值,数组中符合判断条件的赋值为成立赋值,不符合条件赋值为不成立赋值。(ps:该方法返回的是判断后修改更改后的数组,并不会改变原来数组中的值)

修改上下限(修剪)
语法:
import numpy as np
t=np.array(range(54)).reshape((6,9))
t.clip(a,b)
修改上下限分别为a、b,即数组中小于a的值全部替换为a,大于b的值全部替换成b。

numpy中的nan和inf
nan(NAN,Nan): “not a number” 表示不是一个数字
什么时候numpy中会出现nan:
·当我们读取本地的文件为float的时候,如果有缺失,就会出现nan
·当做了一个不合适的计算的时候(比如无穷大(inf)减去无穷大)
inf(infinity):无穷大,inf表示正无穷,-inf表示负无穷
什么时候会出现inf(+inf,-inf):
比如一个数字除以0,(python中会直接报错,numpy中是一个inf或者-inf)
numpy中的nan注意点
·两个nan是不相等的
·np.nan!=np.nan
·利用以上的特性,判断数组中nan的个数(通过t!=t来得到判断数组,其中true的个数就是nan的个数)
·通过np.isnan(a)来判断,返回bool类型
·nan和任何值计算都为nan

那么问题来了,在一组数据中含有nan从而无法计算,我们该怎么办呢?
一般的方式是把缺失的数值替换为均值(中值)或者直接删掉有缺失值的一行。
| 求值 | 方法(axis,轴) |
|---|---|
| 求和 | t.sum(axis=None) |
| 均值 | t.mean(axis=None)受离群点的影响较大 |
| 中值 | np.median(t,axis=None) |
| 最大值 | t.max(axis=None) |
| 最小值 | t.min(axis=None) |
| 极值 | np.ptp(t,axis=None) |
| 标准差 | t.std(axis=None) |
数组的拼接
语法:
np.vstack((a,b))
#数组a与数组b竖直拼接
np.hstack((a,b))
#数组a与数组b水平拼接,a,b位置同拼接位置
例
import numpy as np
t=np.array(range(54)).reshape((6,9)).astype("float")
t0=np.array(range(54,108)).reshape((6,9)).astype("float")


数组的行列交换
语法
t[[a,b],:]=t[[b,a],:]
#a行与b行互换位置
t[:,[a,b]]=t[:,[b,a]]
#a列与b列互换位置
例
import numpy as np
t=np.array(range(54)).reshape((6,9)).astype("float")
t0=np.array(range(54,108)).reshape((6,9)).astype("float")


numpy生成随机数
numpy中random也提供了很多方法
| 方法及参数 | 解释 |
|---|---|
| .rand(d0,d1…,dn) | 创建d0-dn维度的均匀分布的随机数数组,浮点数,范围从0-1 |
| .randn(d0,d1…,dn) | 创建d0-dn维度的标准正态分布随机数,浮点数,平均数0,标准差1 |
| .randint(low,high,(shape)) | 从给定上下限范围选取随机数整数,范围是low,high,形状是shape |
| .uniform(low,high,(size)) | 产生具有均匀分布的数组,low起始值,high结束值,size形状 |
| .normal(loc,scale,(size)) | 从指定正态分布中随机抽取样本,分布中心是loc(概率分布的均值),标准差是scale,形状是size |
| .seed(s) | 随机数种子,s是给定的种子值。因为计算机生成的是伪随机数,所以通过设定相同的随机数种子,可以每次生成相同的随机数 |


numpy其它一些好用的方法
| 用途 | 方法 |
|---|---|
| 获取最大值的位置 | np.argmax(t)(可加轴参数) |
| 获取最小值的位置 | np.argmin(t)(可加轴参数) |
| 创建一个全0的数组 | np.zeros((a,b)),a、b为数组形状 |
| 创建一个全1的数组 | np.ones((a,b)),a、b为数组形状 |
| 创建一个对角线为1的正方形数组(方阵) | np.eye© |

numpy的注意点copy(复制)和view(视图)
·a=b,完全不复制,a和b相互影响
·a=b[:],试图的操作,一种切片,会创建新的对象a,但是a的数据完全由b保管,他们两个的数据变化是一致的
a=b.copy(),复制,a和b互不影响
本文详细介绍了numpy库在数据处理中的各种操作,包括修改数组中的值、使用布尔索引、三元运算符、处理nan和inf、数组拼接、行列交换、生成随机数,以及copy和view的区别。通过实例解析了numpy的功能和注意事项,帮助读者掌握高效的数据处理技巧。
1722

被折叠的 条评论
为什么被折叠?



