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

Python创建嵌套列表时np.append扁平化数组,如何保留独立子列表?

问题根因

np.append()未指定axis参数时,会默认将所有输入内容展平为一维数组再拼接,因此子数组的结构会被打散,最终得到扁平的一维结果。

最优解决方案

直接改用Python原生列表的append()方法追加子数组,完全不需要用numpy的拼接逻辑,所有子元素追加完成后如果需要numpy格式再统一转换即可。同时你代码中冗余的多分支判断可以用映射表简化,修改后代码如下:

import numpy as np
import random

class poblacion:
    def generar(self):
        poblacion_p = np.random.randint(0,4,(10,10))
        print(poblacion_p)
        self.individuos(poblacion_p)

    def individuos(self, poblacion_p):
        # 建立aptitude值到对应行索引的映射,替换冗余的变量和多分支判断
        aptitud_to_idx = {
            20:0, 19:7, 14:1, 12:5, 11:2,
            9:8, 7:3, 5:6, 3:4, 1:9
        }
        aptitudes = [1,3,5,7,9,11,12,14,19,20]
        nueva_g = []
        aptitud = random.choices(aptitudes, weights=(5,15,25,35,45,63,65,67,75,80), k = 10)
        for c in aptitud:
            # 直接用列表append追加子数组,不会打平结构
            nueva_g.append(poblacion_p[aptitud_to_idx[c]])
        print(aptitud)
        # 如果需要numpy格式的二维数组,取消注释下面这行即可
        # nueva_g = np.array(nueva_g)
        print(nueva_g)

补充:如果你一定要用numpy的拼接方法,也可以用np.vstack或者给np.append指定axis=0,但需要提前初始化对应维度的空数组,操作复杂度比直接用列表append高,不推荐这种写法。

运行效果

修改后输出的nueva_g就是你预期的嵌套结构,如果你转成numpy数组,形状会是(10, 10),完全保留每一行子数组的独立性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:24:03