python Numpy中array详解

Python 多维数组详解(numpy) 阅读详情
AI摘要

本文介绍了Python科学计算库Numpy的基本用法,包括数组创建、属性获取、索引切片、数组操作等内容,并列举了常见内置函数及数组输出方式。

Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数。

NumPy数组是一个多维数组对象,称为ndarray。数组的下标从0开始,同一个NumPy数组中所有元素的类型必须是相同的。

>>> import numpy as np

数组的创建

使用numpy.array方法将tuple和list, array, 或者其他的序列模式的数据转创建为 ndarray, 默认创建一个新的 ndarray.

>>> np.array([1,2,3,4]) 
[1 2 3 4]

>>> b = array( [ (1.5,2,3), 
                 (4,5,6)  ]  )   
array([[ 1.5,  2. ,  3. ],  
     [ 4. ,  5. ,  6. ]])  

>>> c = array( [ [1,2], [3,4] ], dtype=complex)  
#指定数组中元素的类型
>>> c  
    array([[ 1.+0.j,  2.+0.j],  
       [ 3.+0.j,  4.+0.j]]) 

生成均匀分布的array:
arange(最小值,最大值,步长)(左闭右开) : 创建等差数列
linspace(最小值,最大值,元素数量)
logspace(开始值, 终值, 元素个数): 创建等比数列

>>> np.arange(15)
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]

>>> np.arange(15).reshape(3,5)
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]

>>> np.arange( 0, 2, 0.3 )        
array([ 0. ,  0.3,  0.6,  0.9,  1.2,  1.5,  1.8])

>>> np.linspace(1,3,9)
[ 1.    1.25  1.5   1.75  2.    2.25  2.5   2.75  3.  ]

生成特殊数组
np.ones: 创建一个数组, 其中的元素全为 1
np.zeros: 创建元素全为 0 的数组, 类似 np.ones
np.empty创建一个内容随机并且依赖与内存状态的数组。
np.eye: 创建一个对角线为 1 其他为 0 的矩阵.
np.identity: 创建一个主对角线为 1 其他为 0 的方阵.

>>> np.zeros((3,4))
[[ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]]

>>> np.ones((3,4))
[[ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]]

>>> np.eye(3)
[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]

获取数组的属性

>>> a = np.zeros((2,2,2))
>>> a.ndim   #数组的维数
3
>>> a.shape  #数组每一维的大小
(2, 2, 2)
>>> a.size   #数组全部元素的数量 
8
>>> a.dtype  #数组中元素的类型
float64
>>> print a.itemsize  #每个元素所占的字节数
8

数组索引,切片,赋值

‘…’符号表示将所有未指定索引的维度均赋为 ‘:’
‘:’在python中表示该维所有元素

>>> a = np.array( [[2,3,4],[5,6,7]] )
>>> a
[[2 3 4]
 [5 6 7]]
>>> a[1,2]
7
>>> a[1,:]
[5 6 7]
>>> print a[1,1:2]
[6]
>>> a[1,:] = [8,9,10]
>>> a
[[ 2  3  4]
 [ 8  9 10]]
>>> c[1,...]                                   # same as c[1,:,:] or c[1]
array([[100, 101, 102],
       [110, 112, 113]])
>>> c[...,2]                                   # same as c[:,:,2]
array([[  2,  13],
       [102, 113]])
>>> def f(x,y):
...     return 10*x+y
...
>>> b = np.fromfunction(f,(5,4),dtype=int)    #
>>> b
array([[ 0,  1,  2,  3],
       [10, 11, 12, 13],
       [20, 21, 22, 23],
       [30, 31, 32, 33],
       [40, 41, 42, 43]]) 

数组操作

>>> a = np.ones((2,2))
>>> b = np.eye(2)
>>> print a
[[ 1.  1.]
 [ 1.  1.]]
>>> print b
[[ 1.  0.]
 [ 0.  1.]]
>>> print a > 2
[[False False]
 [False False]]
>>> print a+b             #数组加,对应位置相加
[[ 2.  1.]
 [ 1.  2.]]
>>> print a-b             #数组减,对应位置相减
[[ 0.  1.]
 [ 1.  0.]]
>>> print b*2             #数组与数值相乘,对应位置乘
[[ 2.  0.]
 [ 0.  2.]]
>>> print (a*2)*(b*2)     #数组与数组相乘,按位置一对一相乘
[[ 4.  0.]
 [ 0.  4.]]
>>> print b/(a*2)          #数组与数组相除,按位置一对一相除
[[ 0.5  0. ]
 [ 0.   0.5]]
>>> print a.dot(b)                    # matrix product,矩阵乘
>>> np.dot(a,a)                       #矩阵乘法
array([[ 2.,  2.],
       [ 2.,  2.]])
>>> print (a*2)**4
[[ 16.  16.]
 [ 16.  16.]]
>>> b = a              #浅拷贝
>>> b is a
True
>>> c = a.copy()       #深拷贝
>>> c is a
False

内置函数(min,max,sum),同时可以使用axis指定对哪一维进行操作:

 >>> a.sum()
4.0
>>> a.sum(axis=0)    #计算每一列(二维数组中类似于矩阵的列)的和
array([ 2.,  2.])
>>> a.min()          #数组最小值
1.0
>>> a.max()          #数组最大值
1.0

使用numpy下的方法:

>>> np.sin(a)
array([[ 0.84147098,  0.84147098],
       [ 0.84147098,  0.84147098]])
>>> np.max(a)
1.0
>>> np.floor(a)  
array([[ 1.,  1.],
       [ 1.,  1.]])
>>> np.exp(a)               #e^x
array([[ 2.71828183,  2.71828183],
       [ 2.71828183,  2.71828183]])
>>> print np.vstack((a,b))   #合并数组
[[ 1.  1.] 
 [ 1.  1.]
 [ 1.  0.]
 [ 0.  1.]]
>>> print np.hstack((a,b))   #合并数组
[[ 1.  1.  1.  0.]
 [ 1.  1.  0.  1.]]
>>> print a.transpose()       #转置

numpy.linalg模块中有很多关于矩阵运算的方法:

>>> import numpy.linalg as nplg

NumPy中的基本数据类型

名称描述
bool用一个字节存储的布尔类型(True或False)
inti由所在平台决定其大小的整数(一般为int32或int64)
int8/16/32/64整数,1/2/4/8个字节大小
uint8/16/32/64无符号整数
float16/32/64半/单/双精度浮点数,16/32/64位,指数、精度也不同
complex64/128复数,分别用两个32/64位浮点数表示实部和虚部

输出数组
当输出一个数组时,NumPy以特定的布局用类似嵌套列表的形式显示:

  • 第一行从左到右输出
  • 每个切片通过一个空行与下一个隔开
  • 一维数组被打印成行,二维数组成矩阵,三维数组成矩阵列表。
  • 如果一个数组太长,则NumPy自动省略中间部分而只打印两端的数据: 
>>> a = arange(6)                         # 1d array  
>>> print a  
    [0 1 2 3 4 5]  
     
>>> b = arange(12).reshape(4,3)           # 2d array  
>>> print b  
    [[ 0  1  2]  
    [ 3  4  5]  
    [ 6  7  8]  
    [ 9 10 11]]     
>>> c = arange(24).reshape(2,3,4)         # 3d array  
>>> print c  
    [[[ 0  1  2  3]  
    [ 4  5  6  7]  
    [ 8  9 10 11]]  
     
    [[12 13 14 15]  
    [16 17 18 19]  
    [20 21 22 23]]]  
python的np.array()函数 {'quicksort', 'mergesort', 'heapsort', 'stable'}(2)np.random.randint(4, 9, size=(3, 5)) 生成一个三行五列的正数矩阵。data={'小写':['a','b','c'],'大写':['A','B','C']}#输出: [1 4 5] (获取数组中(0,0),(1,1)和(2,0)位置处的元素)(start:起始数字 end:结束 Num:要生成的样本数)out:用于存储输出的数组。 阅读详情

相关推荐

关于Python Numpy array 的axis 的用法的总结

运用numpy array 的 mean, sum, std 中 axis 数值的确定

junjiejin的博客 3200

【Python】numpy——数组array

import numpy as np Numpy的主要对象是同质的多维数组array 创建Numpy数组一般有三种方法: (1)通过传入可迭代对象创建,我将之称为基本方法np.array() (2)使用Numpy内部功能函数,内部方法 (3)使用特殊的库函数,特殊方法 (1)np.array() (2)np.ones()、np.zeros()、np.eye()、np.empty() 函数zeros创建一个都是0的数组, 函数ones创建一个都是1的数组, 函数empt...

fftx_00的博客 1万+

Python多维数组之numpy.array

Numpy Python中多维数组、矩阵主要是通过Numpy包内的Ndarray对象创建。ndarray中的每个元素在内存中使用相同大小的块,每个元素是数据类型对象的对象(称为 dtype)。基本的ndarray是使用 NumPy 中的数组函数numpy.array创建的。构造器形式如下: 定义数组 import numpy as np np.array(object, dtype=Non...

The_Masquerader的博客 1931

numpy.array函数详解

  介绍 numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0) 作用:创建一个数组。   参数说明: object:数组 公开数组接口的任何对象,__array__方法返回数组的对象,或任何(嵌套)序列。   dtype : 数据类型,可选 数组所需的数据类型。如果没有给出,那么类...

Android 小萌新的博客 17万+

【Python numpy】创建Ndarray数组对象

NumPy(Numerical Python)是Python科学计算中一个重要的库,它提供了高性能的多维数组对象(ndarray)和丰富的数学函数,使得科学计算和数据分析更加便捷和高效。NumPy的核心是ndarray,这是一个多维数组对象,用于存储和操作大量数据。本文将介绍如何创建ndarray数组对象,为你提供一个入门到NumPy的基础。参数说明:object:可以是Python列表、元组、其他序列对象,或者其他支持数组接口的对象。这是创建数组的输入数据。

m0_62599305的博客 2216

LangFlow开源神器:拖拽构建AI Agent与MCP协议集成实战

LangFlow 15万星开源神器:拖拽搭建 AI Agent,一键部署 API / MCP / JSON 在AI应用开发领域,传统编码方式往往需要处理复杂的API调用、数据处理和流程编排,这让很多开发者望而却步。LangFlow作为GitHub上获得15万星的开源项目,通过可视化拖拽的方式彻底改变了AI Agent的开发体验。本文将完整介绍如何使用LangFlow快速构建功能强大的AI Agent,并实现API、MCP协议和JSON配置的一键部署。 1. LangFlow与AI Agent核心概念解析 1

weixin_33717117的博客 930

python中array的用法_Python中的numpy.array()用法

齐次多维数组是NumPy的主要对象。它基本上是一个元素表, 这些元素都是相同类型的, 并由一个正整数元组索引。尺寸在NumPy中称为轴。NumPy的数组类称为ndarray或别名数组。 numpy.array与标准Python库类array.array不同。 array.array仅处理一维数组, 并提供较少的功能。句法numpy.array(object, dtype=None, copy=Tr...

weixin_40009063的博客 7808

贝塞尔曲线基础

贝塞尔曲线于1962年由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau演算法开发,以稳定数值的方法求出贝兹曲线。

YiYeZhiNian的博客 2043

python numpy.array_python的numpy.array

为什么要用numpyPython中提供了list容器,可以当作数组使用。但列表中的元素可以是任何对象,因此列表中保存的是对象的指针,这样一来,为了保存一个简单的列表[1,2,3]。就需要三个指针和三个整数对象。对于数值运算来说,这种结构显然不够高效。Python虽然也提供了array模块,但其只支持一维数组,不支持多维数组(在TensorFlow里面偏向于矩阵理解),也没有各种运算函数。因而不适合...

weixin_39673051的博客 115

AI+Xmind自动生成测试用例(思维导图格式)

最后:我是Walker,一个热爱分享编程知识的程序员,希望能够帮助到你!

Think_and_work的博客 2332

SIwave仿真手册——信号完整性仿真之S参数的提取(二)

上一篇简单了讲述了软件的各个操作界面,本次博客更新关于的仿真,因为第二章完整的内容比较多,所以分成好几篇博客进行分享。

luohuo9844的博客 1万+

python中的array+1_Numpy中array基础操作(1)

Numpy中array基础操作(1)Numpy是python里面的一个数据科学包.相对于python底层的一些list操作而言,Numpy的操作对象是array(可以一维也可以是多维),其性能比python底层的实现快,代码更加简洁,并且包括了很多现成的数学函数,使用起来比较方便。想学tensorflow或者一些数据科学的工具,首先要学会使用numpy!这是基础。与Python中的list唯一一个...

weixin_39576270的博客 1747

LibreNMS实战:5分钟搞定Docker部署与中文配置(附常见问题排查)

本文详细介绍了如何使用Docker在5分钟内快速部署LibreNMS,并完成中文界面优化。从环境准备到容器启动,再到中文语言包安装和系统配置调整,提供了完整的实战指南。同时,文章还包含常见问题排查和性能调优建议,帮助用户高效搭建网络监控系统。

e1f2g的博客 1279

array用法 numpy_Python-Numpy中Array用法总结

Numpy中array(数组)Numpy主要对象是齐次多维数组,由正整数元组索引,Numpy中维度称为轴(axis),数组的维数称为秩(rank)。可以参考:Numpy快速入门1.1 创建数组常规方法创建数组import numpy as np#一维数组a=np.array([2,3,4])b=np.array([2.,3.,4.])#二维数组c=np.array([[1.,2.],[3.,4.]...

weixin_31889919的博客 1082

读懂 SAP Fiori Administration Catalogs:从管理员入口、权限编排到 Spaces 和 Pages 的落地实践

SAP Fiori 管理员目录的核心价值在于为系统配置提供标准化入口,解决权限与展示分离的问题。随着 SAP_UI 7.55 版本更新,SAP_FLP_ADMIN 角色整合了关键管理工具(如 Launchpad Designer、Content Manager),并通过 Business Catalog 和 Space 的协同作用,确保管理员既能访问配置工具,又能直观查看相关功能入口。项目实施中需注意配置层级(系统级/客户端级)的选择,以及多人协作时的数据同步问题,以提升交付效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 192

基于 Qt 的轻量化工业组态软件设计与实现

本文设计并实现了一种基于Qt框架的轻量化工业组态软件,解决了传统组态软件体积庞大、部署复杂等问题。该软件采用模块化架构,集成可视化图形编辑、设备数据采集、脚本扩展等核心功能,具有跨平台运行、资源占用低、启动速度快等特点。通过关键技术优化,实现了高效稳定的数据采集、脚本控制和网络通信,可广泛应用于工业机器人HMI、小型PLC监控等轻量化场景。测试结果表明,该软件体积约30MB,运行内存占用60-80MB,启动时间1.2秒,满足工业轻量化监控需求。未来可扩展更多工业组件和协议支持,进一步提升应用价值。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 140

python模块numpy之array()

大家一起学机器学习啦!

SoHardToNamed的博客 610

【DRAM存储器六十一】LPDDR5介绍--LPDDR5/5X/4/4X IO结构

简述LPDDR5/5X/4/4X IO结构及等效电路下的VREF理论值计算

highman110的博客 480

Python中list 和numpy.array的区别

1. list可以用append 或者 + 来新增元素或者添加数组,但array不行 2. 大多数array的操作都是elementwise级别的,即对每个元素进行单独处理,而不是视为一个整体再处理, 比如 A + A,得到的结果是A中每个元素的值对应✖️2的结果, 又比如有一个numpy.array A = [1, 2, 3], A + A = [2, 4, 6]。 又比如 A ** ...

Keep Coding 2588

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

python原生list数组与numpy的array

在python中存储集合数据可以选择多种原生数据类型,包括list,array,tuple,dictionary四种类型.其中list可变性强,可存储任意内容并且可变,应用范围广泛.而在进行科学运算,存储纯数字时,numpy被广泛应用,可以说基本完全替代了list.那么它们之间有何不同,差距到底有多大,实际过程中应该如何应用呢? 当然,使用实际案例最能说明问题. 运算速度比较 简单的加减乘除,以10000内的数字做个比较. 首先是求和 mylist = [] for i in range(1,1

Python_xiaowu的博客 1285

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Python: Numpy中array的属性min()和max()

Python: Numpy中array的方法函数min和max作为array数组的方法min()min(i) 作为array数组的方法 对于类型为array的数组,可以直接调用最小值的方法函数min(),和最大值方法函数max()。以下仅以min()为例说明,该函数具体用法与numpy.amin()类似。1 min() 一个简单的应用实例为: from numpy import * arrayTe...

Sunnyconductor的博客 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Numpy的array与Python的list的异同以及numpy的array与matrix的异同

文章目录Numpy与Python内置数据类型list的异同Numpy.array与Numpy.matrix的异同Numpy.ndarray的主要特性Numpy.ndarray的主要操作 Numpy与Python内置数据类型list的异同 Python 本身是设计为通用编程语言的,在科学计算方面远远不如MATLAB等语言。但是Python支持开发了Numpy,Numpy使Python有潜力在科学计算...

26岁从菜鸟开始 1837

python np array_python学习-numpy.array

2019-12-29 学习numpy中的array函数用法一.在命令行中输入help(numpy.array)得到以下输出help(numpy.array)Help on built-in function array in module numpy.core.multiarray:array(…)array(object, dtype=None, copy=True, order=‘K’, s...

weixin_39976499的博客 826

【python】python中List类型与numpy.array类型的互相转换

python中List类型与numpy.array类型的互相转换 当然要先引入numpy包 import numpy as np List转numpy.array: temp = np.array(list) numpy.array转List: arr = temp.tolist()

小苏打的学习博客 2817

numpy array和python list_详解Python list和numpy array的存储和读取方法

详解Python list和numpy array的存储和读取方法numpy array存储为.npy存储:import numpy as npnumpy_array = np.array([1,2,3])np.save('log.npy',numpy_array )读取:import numpy as npnumpy_array = np.load('log.npy')运行结果:list存储为....

weixin_42298415的博客 846

pythonarray什么意思_python.array与numpy.array

小型引导程序可以使任何人受益,因为它可能有用(遵循@dF的出色回答):import numpy as npfrom array import array# Fixed size numpy arraydef np_fixed(n):q = np.empty(n)for i in range(n):q[i] = ireturn q# Resize with np.resizedef np_class...

weixin_39932479的博客 275
上一篇: python 变量类型转换
下一篇: python 深浅拷贝
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值