Python ndarray数组 与 list列表区别

ndarray数组 与 list列表

数组(ndarray)与列表 ( list ) 类似,是具有相同类型的多个元素构成的整体。

数组局限:

数组元素要求是相同类型,而列表的元素可以是不同类型。

数组优势:

  • 数组可以与标量进行运算,数组之间也可以进行矢量化运算。

  • 数组在运算时,具有广播能力。

  • 数组底层使用C程序编写,运算速度快。

  • 数组底层使用C中数组的存储方式(紧凑存储),节省内存空间。

应用对比

#  数组的局限性,每个元素必须是相同的类型,python中的列表,每个元素都可以是不同类型

a = np.array([1,2,"ddd"])	# 都存储成字符类型
a = np.array([1,2,1.2])  	# 将三个元素都存储成float类型

数组的优势

优势1

  • 数组可以与标量进行运算,数组之间也可以进行矢量化运算。
代码举例:python中的列表,给列表中的每个元素+100,给数组中的每个元素+100,分别list和array都是如何操作
li=[1,2,3]
for i in range(len(li)):
li[i]=li[i]+100
array 的操作  100标量  a是数组(矢量),操作的时候,会使用矢量中的每个元素跟标量进行运算。
a = np.arange(1,4)
a + 100  

多个元素的矢量可以标量进行操作,通过【广播】来进行完成的
广播:为了进行对位运算,而尽量将两个数组中的一个数组(也可能是标量),扩展成跟另外一个数组相同的维度。
数组跟其他矢量进行运算,也可以通过广播来进行。
维度相同(可以进行直接的对位运算)

a = np.arange(1,4)
b = np.arange(10,40,10)
a+b # 进行对位运算

# result
array([11, 22, 33])

维度如果不同,也可以通过广播,来尽量匹配成对位的模式,来进行运算

# 维度不同的情况下,最低维度的个数相同即可。
a=np.arange(1,4)
b=np.array([[10,20,30],[100,200,300]])
a + b

# result
array([[ 11,  22,  33],
       [101, 202, 303]])

不是所有的情况,在任何场景下都能进行广播来进行矢量化运算 。要对位相同才行。

d = np.array([1,2])
b = np.array([[2,3,4],[5,6,7]])	
a + b  # 会报错

数组底层使用C程序编写,运算速度快,使用对列表进行循环的方式来创建新列表

优势2

  • 数组底层使用C中数组的存储方式(紧凑存储),节省内存空间。

  • 数据结构" 数组 "存储多个元素时,使用的最广泛一种数据结构

  • 数组存储特点:连续空间上存储元素

  • 优点:数组的随机访问性特别好。

  • 验证内存:ndarray占用的内存要比列表少

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值