【问题标题】:ValueError while Merging Lists in Python在 Python 中合并列表时出现 ValueError
【发布时间】:2013-11-17 02:33:22
【问题描述】:

我正在尝试从 python 2.7 中的多个数组中获取一个数组

我在互联网上发现只需添加两个列表即可:

lista = [1,2,3]
listb = [3,4,5]
listc = lista + listb

在我的情况下,我的第一个列表是空的,下一个列表有 99 个元素。

我的代码是这样的

data_complete = []
for i in range(1, numberOfFiles+1):
    data = getDataFromFile(i)
    data_complete = data_complete + data

最后一行代码不起作用,它返回错误:

data_complete = data_complete + data
ValueError: operands could not be broadcast together with shapes (0) (99)

如果有人能解决这个问题,我会很高兴。

亲切的问候

【问题讨论】:

  • 我猜data = getDataFromFile(i) 是不能按预期工作的。你能验证这个函数的 returnwd 是什么吗?
  • 如果我打印它,变量数据看起来像这样:[0.001 0.002 0.003 ... 0.098 0.099]
  • @Thorsten 返回的数据没有逗号?
  • 是否涉及到 numpy?这看起来不像标准的数组表示?
  • 你正在使用numpy 那么...代码中的那部分在哪里?

标签: python list python-2.7 numpy merge


【解决方案1】:

只需 append 将数据添加到您的列表中

例如:

evens = []
for i in xrange(10):
    if i%2 == 0:
        evens.append(i)

在这个程序结束时,evens 将等于 [2,4,6,8]

【讨论】:

  • 不,这并没有得到我想要的,如果我使用追加,我会得到一个列表列表,但我想要一个包含所有元素的列表。
  • 哦,我会使用扩展来添加列表,而不是让每个列表进入另一个列表!
【解决方案2】:

如果是单个项目,您可以使用append 方法

data_complete.append (data)

如果data本身是一个列表,你可以使用extend方法

data_complete.extend (data)

【讨论】:

【解决方案3】:

看起来getDataFromFile 正在返回一个 numpy 数组,而不是一个列表。在这种情况下,+ 将使用 array 的 连接例程,与 lists 相比,它有一些额外的要求(并返回另一个数组)。您可以使用 list extend 方法来解决这个问题:

data_complete = []
for i in range(1, numberOfFiles+1):
    data = getDataFromFile(i)
    data_complete.extend(data)

【讨论】:

    猜你喜欢
    • 2019-07-22
    • 1970-01-01
    • 2018-02-07
    • 2019-06-03
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多