当前位置: 首页 > news >正文

numpy

  • 1numpy

numpy全称叫Numerical Python,由C语言开发,摆脱python全局解析锁,运算性能强、用来存储和处理大型矩阵,是科学计算和数据分析的基本工具。

  • 2numpy属性

numpy默认数据类型int64、float64

创建一个3行5列从0到14的数组

import numpy as np
a = np.arange(15).reshape(3, 5)

打印数组print(a)

数组的维度a.shape

数组轴的个数a.ndim

数组元素类型a.dtype

数组中每个元素的字节大小a.itemsize

数组元素的总个数a.size

类型查询type(a)

  • 3 创建ndarray

    • 1 array()

数组里的所有元素都是相同数据类型

    • 2 zeros() /ones()/empty()

zeros()全0数组

ones()全1数组

empty内容随机并且依赖于内存状态的全0数组

数组类型(dtype)都是float64

    • 3 arange()

arange() 类似 python 的 range() ,创建一个一维 ndarray 数组

np_arange = np.arange(10, 20, 5,dtype=int) #[10,20)步长为5

print (np_arange) # [10, 15]

    • 4 matrix()

matrix 是 ndarray 的子类,只能生成 2 维的矩阵

x1 = np.mat("1 2;3 4")

x2 = np.matrix("1,2;3,4")

x3 = np.matrix([[1, 2],[3, 4]])

    • 5 创建随机数矩阵

import numpy as np # 3行4列随机多维浮点型数据(二维),rand固定区间[0.0, 1.0) arr = np.random.rand(3, 4) print(arr) # 3行4列随机多维浮点型数据(二维),randn标准正态分布(均值 = 0,标准差 = 1)大部分数字在-2~2 arr = np.random.randn(3, 4) print(arr) # 3行4列随机多维整型数据(二维),randint()指定区间[-1, 5) arr = np.random.randint(-1, 5, size = (3, 4)) print(arr) # 3行4列随机多维浮点型数据(二维),uniform()指定区间[-1, 5)均匀分布的样本值 arr = np.random.uniform(-1, 5, size = (3, 4)) print(arr)
    • 6 ndarray的数据类型

  1. 指定dtype数据类型

  2. astype()转换数组的数据类型

import numpy as np zeros_float_arr = np.zeros((3, 4), dtype=np.float32) print(zeros_float_arr.dtype) #float32 # astype将数组的数据类型转换为int32 zeros_int_arr = zeros_float_arr.astype(np.int32) print(zeros_int_arr.dtype) #int32
    • 7 等比/等差数列

logspace创建一个等比数列的一维数组

import numpy as np a = np.logspace(0, 0, 10) # 开始点为0,结束点为0,元素个数为10 print(a) # [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] a = np.logspace(0, 9, 10) # 0代表10的0次方,9代表10的9次方 print(a) # [1.e+00 1.e+01 1.e+02 1.e+03 1.e+04 1.e+05 1.e+06 1.e+07 1.e+08 1.e+09] a = np.logspace(0, 9, 10, base=2) # 改变基数,以2为底数 print(a) # [ 1. 2. 4. 8. 16. 32. 64. 128. 256. 512.]

linspace创建一个等差数列的一维数组

import numpy as np a = np.linspace(1,10,10) # 起始点,终止点,数列的个数 print(a) # [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.] print(a.dtype) # float64 a = np.linspace(1,10,10,endpoint=False) # endpoint指定是否包含终止值,默认值为True print(a) # [1. 1.9 2.8 3.7 4.6 5.5 6.4 7.3 8.2 9.1]
  • 4 NumPy内置函数

    • 1 基本函数

  • np.ceil(): 向上最接近的整数,参数是 number 或 array

  • np.floor(): 向下最接近的整数,参数是 number 或 array

  • np.rint(): 四舍五入,参数是 number 或 array

  • np.isnan(): 判断元素是否为 NaN(Not a Number),参数是 number 或 array

  • np.multiply(): 元素相乘,参数是 number 或 array

  • np.divide(): 元素相除,参数是 number 或 array

  • np.abs():元素的绝对值,参数是 number 或 array

  • np.where(condition, x, y): 三元运算符,x if condition else y

import numpy as np # randn()标准正态分布 arr = np.random.randn(2, 3) print(arr) """ [[ 0.62075155 -0.39586061 0.07556188] [ 1.14602401 0.61087754 1.3770935 ]] """ print(np.ceil(arr)) """ [[ 1. -0. 1.] [ 2. 1. 2.]] """ print(np.floor(arr)) """ [[ 0. -1. 0.] [ 1. 0. 1.]] """ print(np.rint(arr)) """ [[ 1. -0. 0.] [ 1. 1. 1.]] """ print(np.isnan(arr)) """ [[False False False] [False False False]] """ print(np.multiply(arr, arr)) """ [[0.38533249 0.15670562 0.0057096 ] [1.31337102 0.37317137 1.8963865 ]] """ print(np.divide(arr, arr)) """ [[1. 1. 1.] [1. 1. 1.]] """ print(np.abs(arr)) """ [[0.62075155 0.39586061 0.07556188] [1.14602401 0.61087754 1.3770935 ]] """ print(np.where(arr > 0, 1, -1)) """ [[ 1 -1 1] [ 1 1 1]] """
    • 2 统计函数

  • np.mean(), np.sum():所有元素的平均值,所有元素的和,参数是 number 或 array

  • np.max(), np.min():所有元素的最大值,所有元素的最小值,参数是 number 或 array

  • np.std(), np.var():所有元素的标准差,所有元素的方差,参数是 number 或 array

  • np.argmax(), np.argmin():最大值的下标索引值,最小值的下标索引值,参数是 number 或 array

  • np.cumsum(), np.cumprod():返回一个一维数组,每个元素都是之前所有元素的 累加和 和 累乘积,参数是 number 或 array

多维数组默认统计全部维度,axis参数可以按指定轴心统计,值为0则按第0个维度统计,值为1则按第1个维度统计。

import numpy as np arr = np.arange(12).reshape(3, 4) print(arr) """ [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] """ print(np.cumsum(arr)) # 前缀和 """ [ 0 1 3 6 10 15 21 28 36 45 55 66] """ print(np.sum(arr)) # 所有元素的和66 print(np.sum(arr, axis=0)) # 数组的按第0个维度统计和[12 15 18 21] print(np.sum(arr, axis=1)) # 数组的按第1个维度统计和[ 6 22 38]
    • 3 比较函数

  • np.any(): 至少有一个元素满足指定条件,返回True
  • np.all(): 所有的元素满足指定条件,返回True
import numpy as np arr = np.random.randn(2,3) # randn(均值 = 0,标准差 = 1)大部分数字在-2~2 print(arr) """ [[-0.37764946 0.19308709 -0.21882821] [ 2.32190081 1.79766043 -0.21875982]] """ print(np.any(arr > 0)) print(np.all(arr > 0))
    • 4 去重函数

np.unique():找到唯一值并返回排序结果,类似于Python的set集合

import numpy as np arr = np.array([[1, 4, 1], [3, 2, 1]]) print(arr) """ [[1 4 1] [3 2 1]] """ print(np.unique(arr)) # [1 2 3 4]
    • 5 排序函数

import numpy as np arr = np.array([1, 2, 34, 5]) # np.sort()返回排序后的副本 sortarr1 = np.sort(arr) print(sortarr1) print(arr) # ndarray直接调用sort,在原数据上进行修改 arr.sort() print(arr)
  • 5 NumPy运算

    • 1 基本运算

import numpy as np a = np.array([10, 10, 10, 10]) b = np.arange(4) c = a + b print(a) # [10 10 10 10] print(b) # [0 1 2 3] print(c) # [10 11 12 13]
    • 2 矩阵乘法

np.dot/x.dot(y)【矩阵乘法】(数学里的点积、行列相乘求和)

import numpy as np x = np.array( [[1, 1, 1], [1, 1, 1]] ) y = np.array( [[1, 1], [1, 1], [1, 1]] ) print(x.dot(y)) print(np.dot(x, y)) """ [[3 3] [3 3]] """

*【逐元素相乘】(对应位置的数字直接相乘)

import numpy as np a = np.array( [[2, 2, 2], [3, 3, 3]] ) b = np.array( [[2, 2, 2], [3, 3, 3]] ) print(a * b) """ [[4 4 4] [9 9 9]] """
http://www.jsqmd.com/news/647905/

相关文章:

  • 3文件搞定AI编程:极简工作流让AI从“拖油瓶“变“得力助手
  • HyperMesh实战:复杂载荷映射与场插值技术解析
  • 芯片测试:从IDDQ到动态测试,如何应对纳米工艺下的漏电流挑战?
  • 从“闭源”Majestic看OpenIPC:一个开源IP摄像头固件的真实生态与DIY潜力
  • openEuler 20.03-LTS保姆级安装教程:从镜像下载到SSH远程登录全流程
  • 2026年3月贴标机公司推荐,桌面贴标机/分页贴标机/高精度贴标机/贴标机/小型贴标机/自动贴标机,贴标机厂家怎么选择 - 品牌推荐师
  • 从收音机到手机芯片:BJT三极管75年演进史,为何它仍是模拟电路的核心?
  • C#实战:如何用CANopen协议快速配置伺服驱动器参数(附完整代码)
  • HB100雷达模块焊接避坑指南:如何避免IF引脚击穿(附STM32L476测速电路设计要点)
  • 从拆解到参数解读:深度剖析B系列高压模块的电路设计奥秘
  • AD16板框挖空实战:5分钟搞定PCB内部挖空技巧(附3D效果对比)
  • 技术报告深度解读:Qwen3-VL如何通过架构革新与数据工程重塑多模态AI
  • 高效微信好友关系检测实战指南:WechatRealFriends开源工具完整方案
  • Matlab APP Designer实战:5分钟搞定字符进度条(附完整代码)
  • uv venv --seed:从‘极简主义’到‘开箱即用’的哲学抉择
  • 加固后APK签名失效?使用JKS文件重新签名的完整指南
  • 从靶场到实战:Kali Linux中SQLMap的自动化渗透测试指南
  • 论文小白逆袭指南:书匠策AI——你的课程论文“外挂神器”
  • 智能泡茶设备控制系统设计(有完整资料)
  • Python实战:用pynput库5分钟搞定鼠标键盘监听(附完整代码)
  • 推荐9款免费论文查重工具,如爱毕业aibiye,支持每日不限次数检测及AI改写优化
  • 从零到一:基于Gui Guider 1.9.0与LVGL 9.2.2的ESP32 ST7789显示驱动实战
  • 别再死磕公式了!用Python+FRFT搞定线性调频信号参数估计(附完整代码)
  • Docker Swarm服务发现到底怎么玩?一个Overlay网络+Stack的完整微服务通信Demo
  • 用Dijkstra算法搞定社交网络影响力计算:从PTA真题到真实场景的C++实现
  • LeRobot v3.0 数据格式实战:从Hub流式加载到模型训练
  • 临床医生也能懂的AI课:SUnet在CT影像中自动标定器官的5个实战案例
  • Diffusers实战:从OSError: config.json缺失到HuggingFace镜像与缓存配置全攻略
  • 当传统旅行社面临转型,如何运用旅游市场营销策略与技巧实现突破?
  • 手把手教你改造海康WebSDK Demo:给监控页面加个‘一键切换’通道按钮