【问题标题】:Output of list.append prints word "array" after each iterationlist.append 的输出在每次迭代后打印单词“array”
【发布时间】:2020-10-08 08:02:13
【问题描述】:

我想在 python 中创建一个列表,由不同的条目组成。列表中的每个条目出现的次数不同:

import numpy as np
frequency = (1, 2, 1, 2, 1)
numbers = np.random.choice(9, size = (5, 3), replace=True)
list = []

for i in range(0, 5):
    list.append(np.tile(numbers[i], (int(frequency[i]), 1)))
print(list)

这很好用。但是,当我查看输出 (print(list)) 时,我得到以下信息:

[array([[1, 8, 1]]), array([[2, 8, 0],
   [2, 8, 0]]), array([[6, 8, 6]]), array([[2, 1, 8],
   [2, 1, 8]]), array([[4, 6, 1]])]

为什么每次迭代都包含“数组”一词?我只想有一个这样的列表:

[[1 8 1]
[2 8 2]
[2 8 2]
[6 8 6]
[2 1 8]
[2 1 8]
[4 6 1]]

【问题讨论】:

    标签: python arrays list append


    【解决方案1】:

    因为您使用两种不同类型的数据 - 经典的 python 列表和 numpy 列表。当您打印经典列表时,它会显示[a, b, c],但对于 numpy 列表,它将显示array([a, b, c])

    【讨论】:

      【解决方案2】:

      为什么每次迭代都包含“数组”这个词?

      您有 numpy.arrays 中的 list,因为 numpy.tile 函数确实返回 numpy.array

      我想要一个这样的列表:

      所需的输出表明您正在寻找单个二维数组,可以使用numpy.vstack 函数从一维数组的list 创建。考虑以下示例:

      import numpy as np
      mylist = [np.array([1,2,3]),np.array([4,5,6]),np.array([7,8,9])]
      myarray = np.vstack(mylist)
      print(myarray)
      

      输出:

      [[1 2 3]
       [4 5 6]
       [7 8 9]]
      

      附注:请不要将python内置函数名称作为变量

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-16
        • 2022-11-17
        • 2020-12-21
        • 1970-01-01
        • 1970-01-01
        • 2015-08-30
        相关资源
        最近更新 更多