NumPy(Numerical Python的简称) 是高性能科学计算和数据分析的基础包,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数,其部分基本功能如下:
1 2 3 4 5 6 7 8 9 | ndarry,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数值 用于对整组数据进行快速运算的标准数学函数(无需编写循环) 用于读写磁盘数据的工具以及用于操作内存映射文件的工具 线性代数、随机生成以及傅立叶变化功能 用于集成C、C + + 、Fortran等语言编写的代码工具 |
1 2 3 4 | In [ 9 ]: import numpy as np In [ 10 ]: print np.version.version 1.8 . 2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | In [ 16 ]: data1 = [ 2 , 3 , 5 , 7 , 1024 ] In [ 17 ]: arr1 = np.array(data1) In [ 18 ]: arr1 Out[ 18 ]: array([ 2 , 3 , 5 , 7 , 1024 ]) In [ 19 ]: data2 = ([ 1 , 2 , 3 , 4 ],[ 5 , 6 , 7 , 8 ]) In [ 20 ]: arr2 = np.array(data2) In [ 21 ]: arr2 Out[ 21 ]: array([[ 1 , 2 , 3 , 4 ], [ 5 , 6 , 7 , 8 ]]) In [ 22 ]: arr2.ndim Out[ 22 ]: 2 In [ 23 ]: arr2.shape Out[ 23 ]: ( 2 , 4 ) |
除非显式说明,否则np.array都会尝试为新建的这个数组推断出一个较为适合的数据类型,数据类型保存在一个特殊的dtype对象中,
1 2 3 4 5 | In [ 25 ]: arr1.dtype Out[ 25 ]: dtype( 'int64' ) In [ 26 ]: arr2.dtype Out[ 26 ]: dtype( 'int64' ) |
可以通过nadarry的astype方法显式地转化其他dtype
1 2 3 4 5 6 7 8 9 | In [ 45 ]: evilxr = np.array([ 6 , 7 , 2 , 3 , 8 , 6 ]) In [ 46 ]: evilxr.dtype Out[ 46 ]: dtype( 'int64' ) In [ 47 ]: folat_evilxr = evilxr.astype(np. float ) In [ 48 ]: folat_evilxr.dtype Out[ 48 ]: dtype( 'float64' ) |
如果将整数转换为浮点数,则小数部分将会被截断(而不是四舍五入)
1 2 3 4 5 6 7 8 9 | In [ 57 ]: evilxr = np.array([ 6.1 , 7.5 , 2.9 , 3.2 , 8.9 , 6.123 ]) In [ 58 ]: evilxr.dtype Out[ 58 ]: dtype( 'float64' ) In [ 59 ]: int_evilxr = evilxr.astype(np.int32) In [ 60 ]: int_evilxr Out[ 60 ]: array([ 6 , 7 , 2 , 3 , 8 , 6 ], dtype = int32) |
zeros和ones也可以分别创建指定长度或者形状的全0或全1数组,empty可以创建一个没有任何具体值的数组。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | In [ 30 ]: np.zeros( 2 ) Out[ 30 ]: array([ 0. , 0. ]) In [ 31 ]: np.zeros(( 2 , 3 )) Out[ 31 ]: array([[ 0. , 0. , 0. ], [ 0. , 0. , 0. ]]) In [ 32 ]: np.empty(( 2 , 3 , 2 )) Out[ 32 ]: array([[[ 2.15749693e - 316 , 0.00000000e + 000 ], [ 0.00000000e + 000 , 0.00000000e + 000 ], [ 0.00000000e + 000 , 0.00000000e + 000 ]], [[ 0.00000000e + 000 , 0.00000000e + 000 ], [ 0.00000000e + 000 , 0.00000000e + 000 ], [ 0.00000000e + 000 , 0.00000000e + 000 ]]]) |
arange是Python内置函数range的数组版
1 2 | In [ 36 ]: np.arange( 8 ) Out[ 36 ]: array([ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ]) |
数组和标量之间的运算
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | In [ 2 ]: data1 = [ 8 , 9 , 5 , 9 ] In [ 3 ]: arr1 = np.array(data1) In [ 7 ]: import numpy as np In [ 8 ]: arr1 = np.array(data1) In [ 9 ]: arr1 Out[ 9 ]: array([ 8 , 9 , 5 , 9 ]) In [ 10 ]: arr1 * arr1 Out[ 10 ]: array([ 64 , 81 , 25 , 81 ]) In [ 11 ]: arr1 - arr1 Out[ 11 ]: array([ 0 , 0 , 0 , 0 ]) In [ 12 ]: arr1 + 1 Out[ 12 ]: array([ 9 , 10 , 6 , 10 ]) |
不同数组之间的运算,也叫广播
若非特别声明,文章均为Evilxr的个人笔记,转载请注明出处。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· MQ 如何保证数据一致性?