Python中NumPy数组的高级赋值与索引技巧

小鹿同学
小鹿同学
发布时间:2026-10-13 | 4人浏览过
原创

本文深入解析Python中NumPy数组的赋值与索引机制。通过对比list与array在分隔符、数据类型、形状属性及乘法操作上的差异,重点演示如何利用布尔列表或数组对NumPy数组进行高效筛选赋值。文章指出列表不支持此类索引操作,并提供了具体的代码示例与错误分析,帮助开发者掌握NumPy的核心用法。

NumPy数组与列表的基础差异

首先展示一段基础代码示例:


import numpy as np

list_a = list(range(10))
print("list_a: {}".format(list_a))

array_a = np.array(list_a)
print("array_a: {}".format(array_a))

list_b = [True,False,True,True,False,False,True,False,True,False]
print("list_b: {}".format(list_b))

array_b = np.array(list_b)
print("array_b: {}".format(array_b))

mask = np.zeros(10,dtype=np.bool)
print("mask: {}".format(mask))

运行上述代码后的输出结果如下:


list_a: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
array_a: [0 1 2 3 4 5 6 7 8 9]
list_b: [True, False, True, True, False, False, True, False, True, False]
array_b: [ True False True True False False True False True False]
mask: [False False False False False False False False False False]

通过对比输出可以发现,list与array在显示格式上存在显著差异:list元素间以逗号分隔,而array元素间以空格分隔。此外,使用numpy中的zeros函数生成的是array对象。除了显示格式,list和array在内部机制上还有诸多不同,具体包括:

list是Python内置的普通列表对象,支持append和extend方法,但不具备shape属性;而array是numpy库中的专用对象,不支持append和extend方法,但拥有shape属性用于描述维度。

在数据存储类型方面,list允许存储不同类型的数据,如int、float、str或布尔值;而array要求所有元素必须为相同类型。

在运算支持上,list不支持直接的乘法操作;array则支持乘法运算。

针对赋值操作,赋值的目标对象必须是array,而用于索引的对象既可以是array也可以是list:

利用布尔索引进行数组赋值


d = array_a[list_b]
print("array_a[list_b]: {}".format(d))

e = array_a[array_b]
print("array_a[array_b]: {}".format(e))

mask[list_b] = 1
print("mask: {}".format(mask))

相关代码的执行输出如下:


array_a[list_b]: [0 2 3 6 8]
array_a[array_b]: [0 2 3 6 8]
mask: [ True False True True False False True False True False]

这种操作方式能够从array_a中提取出对应于b数组或列表中True位置的所有元素,并组成一个新的数组。

如果尝试对列表执行相同的赋值操作,即将代码中的array_a替换为list_a,程序将抛出错误:


d = list_a[list_b]
TypeError: list indices must be integers or slices, not list

e = list_a[array_b]
TypeError: only integer scalar arrays can be converted to a scalar index

以上就是关于Python中NumPy数组赋值技巧的完整分享,希望能为读者提供有价值的参考,并欢迎大家继续支持本站获取更多技术内容。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表