Python中数组有没有占位符的概念?

arr = np.array([None,3,4])用 None 占一个位没问题,但用 np.max(arr)却不能求最大值,提示 TypeError: ‘>=’ not supported between instances of ‘NoneType’ and ‘int’。我想知道有没有一个占位符但不参与运算。
Python中数组有没有占位符的概念?

8 回复

在Python的标准列表(list)里,没有像C语言那样声明固定大小数组时的“占位符”概念。列表是动态的,你直接往里放数据就行。

但是,如果你需要一个固定长度、有初始“占位”值的序列,通常有这几种做法:

  1. 用列表乘法:这是最直接的方法,创建一个有N个相同值的列表。

    # 创建一个长度为5,初始值全为None的列表
    placeholder_list = [None] * 5
    print(placeholder_list)  # 输出:[None, None, None, None, None]
    
    # 或者用0占位
    int_list = [0] * 10
    
  2. 用列表推导式:更灵活,可以基于索引生成初始值。

    # 创建一个长度为5,初始值全为-1的列表
    placeholder_list = [-1 for _ in range(5)]
    
  3. 使用array模块:如果处理数值类型且要求内存紧凑,可以用这个。创建时需要指定类型代码和初始序列。

    import array
    # 创建一个类型为整型('i'),初始包含5个0的数组
    arr = array.array('i', [0]*5)
    
  4. 使用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 解决了这个问题。

回到顶部