【问题标题】:Merging NumPyarrays合并 NumPy 数组
【发布时间】:2021-09-05 06:16:31
【问题描述】:

我希望将列表中的 NumPy 数组元素合并到单个 NumPy 数组中。我该怎么做?

这是包含数组的列表的结构和我尝试的代码:

import numpy as np

baked_quad_vertices = []

A = (1,2,3,4,5,
     1,2,3,4,5,
     1,2,3,4,5,
     1,2,3,4,5)
A = np.array(A, dtype=np.float32)

B = (1,2,3,4,5,
     1,2,3,4,5,
     1,2,3,4,5,
     1,2,3,4,5)
B = np.array(B, dtype=np.float32)

baked_quad_vertices.append(A)
baked_quad_vertices.append(B)

Z = baked_quad_vertices
Z = np.vstack(Z)
print(Z)

我明白了:

[[1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 1. 2. 3. 4. 5.]
 [1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 1. 2. 3. 4. 5.]]

我想要:

[1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 1. 2. 3. 4. 5.
 1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 1. 2. 3. 4. 5.]

最理想的情况是:

[1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 1. 2. 3. 4. 5.
 1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 1. 2. 3. 4. 5., dtype=np.float32]

【问题讨论】:

    标签: python arrays numpy merge array-merge


    【解决方案1】:

    要获得您想要的结果,请尝试使用np.hstack 而不是np.vstack


    编者注:以下原始答案是指问题的Revision 1

    这看起来不对,因为每个 numpy 数组仍然是分开的,... 是什么意思?

    事实上,当你打印一个数组时,它看起来就是这样。 np.vstack 的输出返回一个数组,所以你应该有一个数组。尝试打印:

    print(type(baked_quad_vertices[chunk_count]))
    

    【讨论】:

    • 谢谢。虽然它似乎给了我一个数组中的数组。我只想要 (number, number, number, data_type) 最后。除非我只需要合并列表来做到这一点?我在原始帖子中添加了一个简化的部分。
    • 然后尝试使用np.hstack 而不是np.vstack