【问题标题】:concatenate arrays of different lengths into one multidimensional array将不同长度的数组连接成一个多维数组
【发布时间】:2023-03-05 08:03:01
【问题描述】:

我知道你不能在 NumPy 中堆叠或连接不同长度的数组,因为所有矩阵都需要是矩形的,但是还有其他方法可以实现吗?

例如:

a = [1, 2 ,3]
b = [9, 8]

堆叠它们会得到:

c = [[1, 2, 3]
     [9, 8]]

或者,如果没有办法创建上述内容,我该如何编写一个函数来获得这个:(0 代替缺少的元素来填充矩阵)?

c = [[1, 2, 3]
     [9, 8, 0]]

【问题讨论】:

  • 你打算用这个c做什么?它需要是(2,3)数组吗?为什么不只是 [a,b] 列表(列表)?

标签: python arrays numpy multidimensional-array concatenation


【解决方案1】:

这段代码对我有用:

a = [1, 2 ,3]
b = [9,8]
while len(b) != len(a):
    if len(b) > len(a):
        a.append(0)
    else:
        b.append(0)
final = np.array([a,b])
print(final)

代码是不言自明的,但我会尽力给出有效的解释: 我们取两个列表(比如 a 和 b)并比较它们的长度,如果它们不相等,我们将元素(在本例中为 0)添加到长度较低的列表中,循环直到它们的长度相等,然后简单地转换它们进入 numpy 中的二维数组

如果你想要 NaN 值,你也可以用 np.NaN 替换 0

【讨论】:

    猜你喜欢
    • 2014-12-20
    • 1970-01-01
    • 2016-01-01
    • 2013-08-21
    • 1970-01-01
    • 2020-01-17
    • 2019-02-05
    • 2021-05-02
    相关资源
    最近更新 更多