【问题标题】:Unable to append 2 1D arrays in 1 1D array无法在 1 个 1D 数组中附加 2 个 1D 数组
【发布时间】:2022-01-04 20:38:28
【问题描述】:

下面是我尝试将 2 个 1D 数组附加到 1 个 1D 数组的代码:

import numpy as np
import random

arr = np.random.randint(10, size=(1,))
arr1 = np.random.randint(20, size=(1,))
arr2 = np.random.randint(30, size=(1,))

print(arr)
print(arr1)
print(arr2)

aparr = np.append(arr, arr1, arr2)
print(aparr)

但是,我收到一条错误消息:

     21 print(arr2)
     22 
---> 23 aparr = np.append(arr, arr1, arr2)
     24 print(aparr)

<__array_function__ internals> in append(*args, **kwargs)

/usr/local/lib/python3.7/dist-packages/numpy/lib/function_base.py in append(arr, values, axis)
   4669         values = ravel(values)
   4670         axis = arr.ndim-1
-> 4671     return concatenate((arr, values), axis=axis)
   4672 
   4673 

<__array_function__ internals> in concatenate(*args, **kwargs)

TypeError: only integer scalar arrays can be converted to a scalar index

不确定,我错过了什么/做错了什么。有人可以通过更正这段代码来查看并指出/解释错误吗?

【问题讨论】:

  • 您是否返回并重新阅读了append 文档?签名清楚吗? append(arr, values, axis)?第三个参数是什么?

标签: python arrays numpy


【解决方案1】:

np.append() 接受两个参数,一个要附加到的数组和一个要附加到它的值列表。所以,替换

aparr = np.append(arr, arr1, arr2)

通过

aparr = np.append(arr, [arr1, arr2])

它应该可以工作。

【讨论】:

  • 谢谢,Daniel,我正要发布相同的内容,因为我刚刚通过测试发现了相同的内容。看来你比我快一点。再次感谢
【解决方案2】:

我相信您正在寻找的命令称为np.concatenate 这就是常用的将多个数组组合成一个相同维度的数组的方法。

arr = np.random.randint(10, size=(10,))
arr1 = np.random.randint(20, size=(10,))
arr2 = np.random.randint(30, size=(5,))
combined = np.concatenate([arr, arr1, arr2]) # will be of size 25

请注意,所有数组都在一个列表中(可以是元组或其他东西,只要它作为一个变量传递给函数)。

可以使用np.append,但这只是np.concatenate 的有限版本,如source code 所示,它仅在恰好组合两个数组时才有效,所以你必须这样做在两个步骤中或通过组合应该添加的两个数组:

combined = np.append(np.append(arr, arr1), arr2)
# OR 
combined = np.append(arr, [arr1, arr2])

最后的替代方案有效,因为数组在合并之前被展平,因为没有指定 axis(合并两个数组的维度)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2016-05-25
    • 2021-10-12
    • 2021-10-07
    • 2015-11-28
    • 1970-01-01
    相关资源
    最近更新 更多