Python中数组有没有占位符的概念?
arr = np.array([None,3,4])用 None 占一个位没问题,但用 np.max(arr)却不能求最大值,提示 TypeError: ‘>=’ not supported between instances of ‘NoneType’ and ‘int’。我想知道有没有一个占位符但不参与运算。
Python中数组有没有占位符的概念?
8 回复
np.nan ?
在Python的标准列表(list)里,没有像C语言那样声明固定大小数组时的“占位符”概念。列表是动态的,你直接往里放数据就行。
但是,如果你需要一个固定长度、有初始“占位”值的序列,通常有这几种做法:
-
用列表乘法:这是最直接的方法,创建一个有N个相同值的列表。
# 创建一个长度为5,初始值全为None的列表 placeholder_list = [None] * 5 print(placeholder_list) # 输出:[None, None, None, None, None] # 或者用0占位 int_list = [0] * 10 -
用列表推导式:更灵活,可以基于索引生成初始值。
# 创建一个长度为5,初始值全为-1的列表 placeholder_list = [-1 for _ in range(5)] -
使用
array模块:如果处理数值类型且要求内存紧凑,可以用这个。创建时需要指定类型代码和初始序列。import array # 创建一个类型为整型('i'),初始包含5个0的数组 arr = array.array('i', [0]*5) -
使用NumPy库(科学计算常用):它提供了强大的多维数组对象,有专门的函数创建带初始值的数组。
import numpy as np # 创建一个形状为(3, 4),用0填充的数组 np_zeros = np.zeros((3, 4)) # 创建一个形状为(2, 2),用1填充的数组 np_ones = np.ones((2, 2)) # 创建一个长度为6,用999填充的数组 np_full = np.full(6, 999)
总结:标准列表用乘法或推导式创建“占位”列表,需要数值计算或固定类型时考虑array或NumPy。
求最大的话还是加个 INT_MIN 吧
不知道你的具体需求是啥,感觉像走了歪路
哈哈,也许是应该用 mask 实现的东西
可以试试 -float(“inf”)
一般要干掉 nan 才好计算,这是数据清理的基本要求,框架不会自动帮你省略。
为什要占位呢?直接过滤出数据,再处理不久行了
numpy.nanmin、numpy.nanmax 解决了这个问题。

