numpy 使用总结
-
# 掩码数据 -- 表示掩码 ,作用:为了存储时所占用内存更小
A = np.array(range(20, 30)) a_mask = A < 25 print(a_mask) # [ True True True True False False False False False False] ym = np.ma.array(A, mask=a_mask, fill_value=-999999) # 默认填充值 print(ym)
参考:https://blog.csdn.net/weixin_43569478/article/details/108079869
-
# 打印掩码类型
print(ym.mask)
-
# 判断元素是否是掩码 --
print(ym[0] is np.ma.masked)
-
# 确定输入是否具有掩码值
print(np.ma.is_masked(ym))
-
# 此函数不检查输入内容,仅检查类型为MaskType 如 ym.mask
print(np.ma.is_mask(ym.mask))
-
# 合并数组
#TODO 注意这里的合并数组必须放到一个集合中 也可以说是按行或列拼接为新数组 AA = np.concatenate([A, np.array([np.nan, np.nan])]) print(AA)
a = np.arange(0, 10)
b = np.arange(1, 11)
c = np.arange(2, 12)
print(np.vstack((a, b, c)).T)
print(np.stack((a, b, c), axis=-1)) -
# 获取值为 nan 的
print(AA[np.isnan(AA)])
-
# 获取值不为 nan 的
print(AA[~np.isnan(AA)])
-
# 判断 24 < AA < 28 的值
# TODO 记得加括号哦 print(AA[(AA > 24) & (AA < 28)])
-
# 获取判断是掩码数据的bool值列表
isym = np.array(list(map(lambda v: v is np.ma.masked, ym))) print(isym) # 获取掩码值的下标 isymind = np.where(isym == True)
# 这种方法就不用上面的两步才能完成了 isymind = np.where(ym == np.ma.masked) print(isymind)
# 修改掩码值为 0 ym[isymind[0]] = 0 print(ym) - 二维数据判断大于小于,并取值
# lats, lons, data 都是二维数据 t_index = np.logical_and(lats >= lat[0], lats <= lat[1]) n_index = np.logical_and(lons >= lon[0], lons <= lon[1]) index = np.logical_and(t_index == True, n_index == True) tidx = np.where(index == True) print(tidx) la = lats[tidx] lo = lons[tidx] dd = data[tidx] print(la) print(lo) print(dd)
-
行列互换
# 生成倒序数组 print(np.linspace(10,1,10)) # 行列互换 s = np.arange(20).reshape(4,5) print(s) print(s.T)
-
dtype函数创建"新"类型
from numpy import * #创建一个数据类型 t t = dtype([("name", str_, 40), ("age", uint8), ("math", uint8)]) # 创建数组x,数组元素类型为 t x = array([("liming", 35, 78),("yangmi", 31, 58)], dtype = t) print (x) print (x[0]["name"]) print (x[1]["math"]) t = dtype([("name", "S40"), ("age", "u8"), ("math", "f")]) y = array([("liming", 44, 98),("yangmi", 32, 58)], dtype = t) print(t) print (y[1]["age"]) print (y["age"]) print (y[0]) # [('liming', 35, 78) ('yangmi', 31, 58)] # liming # 58
# [('name', 'S40'), ('age', '<u8'), ('math', '<f4')] # 32 # [44 32] # (b'liming', 44, 98.) # 从结果可以看出,对于这种复合的类型可以按行(记录)访问print y[0],也可以按列(字段)访问print y["age"] - extract 根据某个条件从数组中抽取元素,返回满条件的元素。
import numpy as np x = np.arange(9.).reshape(3, 3) print ('我们的数组是:') print (x) # 定义条件, 选择偶数元素 condition = np.mod(x,2) == 0 print ('按元素的条件值:') print (condition) print ('使用条件提取元素:') print (np.extract(condition, x))
- argwhere where 查找等于指定元素的下标
lat = np.array([1,2,3,60,70,80]) print(np.argwhere(lat == 60)) print(np.where(lat == 60))
-
flip 数组上下左右反转
np.flip()
np.flipud() # 上下
np.fliplr() # 左右 - maxinum X 与 Y 逐位比较取其大者
# 数据每个值和 0 比较,取大值(data中值大于 0,返回大值 data中值,data中值小于0,返回大值 0) data = np.maximum(data, 0)
- 百分位计算
np.percentile(数组, 100) # 计算数组,第100的百分位数值
仅供参考,欢迎评论交流
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理