You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用列表初始化NumPy数组?创建填充列表的二维np.array方法

解决方案

当然有啦!不过得分两种情况来看——你是想让数组里的每个元素都指向同一个列表,还是每个位置都有独立的列表?这两种实现方式不太一样,我给你详细说说:

1. 填充相同的列表对象

如果你只是需要数组的每个元素都是同一个固定列表(比如[0, 1]),可以直接用np.full(),它和np.zeros()的用法类似,只需要指定填充的列表即可:

import numpy as np

# 创建10x10的二维数组,每个元素都是[0, 1]
arr = np.full((10, 10), [0, 1], dtype=object)
print(arr[0][0])  # 输出: [0, 1]

⚠️ 注意:这种方式下,数组里所有的列表都是同一个对象的引用。如果你修改其中一个列表,所有位置的列表都会跟着变:

arr[0][0].append(2)
print(arr[1][1])  # 输出: [0, 1, 2]

2. 填充独立的列表(每个列表互不影响)

如果需要每个位置的列表都是独立的(修改一个不会影响其他),就不能直接用np.full()了,推荐用列表推导式先构建嵌套列表,再转成numpy数组:

import numpy as np

# 创建10x10的二维数组,每个元素都是独立的空列表
arr = np.array([[[] for _ in range(10)] for _ in range(10)], dtype=object)

# 测试独立性
arr[0][0].append(1)
print(arr[0][0])  # 输出: [1]
print(arr[1][1])  # 输出: [],不受影响

你也可以把空列表换成自定义的初始列表,比如[1,2,3]:

arr = np.array([[[1,2,3] for _ in range(10)] for _ in range(10)], dtype=object)

另外,如果你想用更“numpy风格”的方法,也可以用np.fromfunction(),不过写法会稍微复杂一点:

arr = np.fromfunction(lambda i, j: [], shape=(10,10), dtype=object)

这种方式同样会生成独立的空列表。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:17:37