【问题标题】:How to make list in list, the result is not what i want. help me [closed]如何在列表中列出列表,结果不是我想要的。帮帮我[关闭]
【发布时间】:2021-06-23 12:52:37
【问题描述】:

我想创建一个随机值的数组,但结果不是我想要的。请帮帮我

ui1 = []
for i in range (3):
    ui = (random.rand(1, 2))
    ui = np.transpose(ui)
    ui1.append(ui)
    print(ui1) 

结果是这样的

[array([[0.55828503],
       [0.05327795]])]
[array([[0.55828503],
       [0.05327795]]), array([[0.54830574],
       [0.43161689]])]
[array([[0.55828503],
       [0.05327795]]), array([[0.54830574],
       [0.43161689]]), array([[0.19176995],
       [0.16990981]])]

我希望结果是没有“数组”,就像这样 [[xxxx,xxxx][xxxx,xxxx]]

【问题讨论】:

  • 而不是print(ui1),您应该编写自己的函数来按您想要的方式打印数组。
  • 您正在附加 numpy 数组,要将它们转换为列表,请使用 tolist
  • ui1 是 (2,1) 形状数组的列表。 np.array(ui1) 将创建一个 (3,2,1) 形状的数组。标题显示列表中的列表,但文本显示 array。保持你的术语一致,否则你会得到不同的答案。显示中的array 之类的词不仅仅是为了外观。

标签: python pandas list dataframe numpy


【解决方案1】:

根据要求,您需要 1d kind listnp.transpose(np.random.rand(1, 2)) 返回为 2d numpy object。所以,

1. 先用np.ravel 把它变成1d array
2. 然后用np.ndarray.tolist 把它转换成list

import numpy as np

ui1 = []
for i in range (3):
    ui = np.transpose(np.random.rand(1, 2)).ravel()
    ui1.append(ui.tolist())
    print(ui1) 

输出:

[[0.44580988372803254, 0.648543978436401]]
[[0.44580988372803254, 0.648543978436401], [0.15899973846214366, 0.7142306516115241]]
[[0.44580988372803254, 0.648543978436401], [0.15899973846214366, 0.7142306516115241], [0.9684254127229089, 0.4865093871901571]]

【讨论】:

    【解决方案2】:

    ui 变量的类型为 numpy.ndarray,因此它以这种方式打印,以获得您需要的预期输出:

    1. 使用.tolist()numpy.ndarray 函数将numpy-arrays(ui) 转换为list
    2. 使用 concat (+=) 将 ui 添加到 ui1,而不是 append 以获得二维列表
    3. 消除transpose函数

    试试:

    import numpy as np
    
    ui1 = []
    
    for i in range (3):
        ui = (np.random.rand(1, 2))
        ui1 += ui.tolist()
        print(ui1)
    

    输出:

    [[0.14189306309813854, 0.16354616375767916]]
    [[0.14189306309813854, 0.16354616375767916], [0.6569125084666053, 0.297727414477004]]
    [[0.14189306309813854, 0.16354616375767916], [0.6569125084666053, 0.297727414477004], [0.0970596850634321, 0.0031047000241498646]]
    

    【讨论】:

    • 请检查输出`[[xxxx,xxxx][xxxx,xxxx]]`。这是格式
    • @ExplooreX 谢谢我忘了删除transpose 我已经更新了答案
    • 好的 @Abhi_j,感谢您提供基本步骤的新想法
    • @ExplooreX 谢谢。但我不明白为什么在问题中使用转置,在你的回答中你能再次解释一下吗?
    猜你喜欢
    • 2019-06-30
    • 2021-07-16
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多