【问题标题】:ufunc 'add' did not contain a loop with signature matching types dtypeufunc 'add' 不包含签名匹配类型 dtype 的循环
【发布时间】:2019-12-19 11:51:19
【问题描述】:

为什么会出现这个错误?

ufunc 'add' 不包含签名匹配类型 dtype 的循环

代码:

cols = df.columns.tolist()
cols = np.array (cols)
cols2 = cols[:17] + cols[19:22] + cols [18]

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    有两个问题

    • 运算符+,在numpy 数组上使用时,被解释为数字加法,而不是列表连接,因此匹配dtype 的错误。而不是加法,你应该使用np.concatenate
    • cols[18] 不是数组——它是数组的一个元素。您不能添加数字和数组(如果您想要将元素附加到数组中)
    cols2 = np.concatenate([cols[:17], cols[19:22], [cols[18]]])
    

    或者您可以将 cols 保留为列表(不将其转换为 numpy 数组并使用列表添加):

    cols = df.columns.tolist()
    cols2 = cols[:17] + cols[19:22] + [cols[18]]
    

    【讨论】:

    • 错误是因为 cols 是一列有 23 行。那么如何创建一个带有列的新向量 - 0-10 + 15-20 + 20-21 ? TY
    • 正如我所说,您可以使用列表添加或 numpy 连接。我认为列表添加更好cols = df.columns.tolist(); cols2 = cols[:11] + cols[15:21] + cols[21:22](但不要将cols转换为np.array
    猜你喜欢
    • 2021-11-23
    • 2018-07-25
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2016-08-06
    相关资源
    最近更新 更多