在下面这样的情况下,如何对这两个矩阵进行vstack?
import numpy as np
a = np.array([[3,3,3],[3,3,3],[3,3,3]])
b = np.array([[2,2],[2,2],[2,2]])
a = np.vstack([a, b])
Output:
ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 3 and the array at index 1 has size 2
我想要的输出如下所示:
a = array([[[3, 3, 3],
[3, 3, 3],
[3, 3, 3]],
[[2, 2],
[2, 2],
[2, 2]]])
我的目标是循环遍历堆叠矩阵的内容,为每个矩阵编制索引,并调用特定行上的函数。
for matrix in a:
row = matrix[1]
print(row)
Output:
[3, 3, 3]
[2, 2]
2条答案
按热度按时间enyaitl31#
小心那些“numpy更快”的说法。如果您已经有了数组,并且充分利用了数组方法,
numpy
速度确实更快。但是如果您从列表开始,或者必须使用python级别的迭代(就像您在Pack...
),即numpy
版本可能会慢一些。只是在电脑上做时间测试
Pack
步骤:将其与使用简单列表获取每个数组的第一行进行比较:
200µs而不是1µs!
和你的时间
Unpack
:pepwfjgg2#
我只能用numpy解决这个问题。因为numpy比python的list函数快得多(https://towardsdatascience.com/how-fast-numpy-really-is-e9111df44347)我想分享我的答案,因为它可能对其他人有用。
我从添加np.nan开始,使两个数组的形状相同。
然后我编写了一个函数,将每个数组解包到一个数组中,并删除nan。
然后我可以在矩阵中循环,找到我想要的行,然后打印出来。
我还创建了一个函数,用于在每行需要添加多个nan时打包矩阵: