python - 展平包含不同形状的 numpy 数组的列表

标签 python arrays numpy

我试图找到一个解决方案来展平以下 numpy 数组列表:

a = np.arange(9).reshape(3,3)
b = np.arange(25).reshape(5,5)
c = np.arange(4).reshape(2,2)
myarrs = [a,b,c]

d = np.arange(5*5*5).reshape(5,5,5)
myarrs2 = [a,b,c,d]
我的 myarrs我目前正在使用:
res = np.hstack([np.hstack(i) for i in myarrs])
但我想知道是否有任何其他内置方法可以执行此任务,特别是在具有不同形状的数组的情况下。
我看到了其他问题:Flattening a list of NumPy arrays?但它们通常指的是具有相同形状的数组。

最佳答案

你可以尝试这样的事情:

np.concatenate([x.ravel() for x in myarrs])
这应该比您的方法更快:
a = np.arange(9).reshape(3,3)
b = np.arange(25).reshape(5,5)
c = np.arange(4).reshape(2,2)
myarrs = [a,b,c]


res = np.concatenate([x.ravel() for x in myarrs])
print(res)
# [ 0  1  2  3  4  5  6  7  8  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24  0  1  2  3]


%timeit np.concatenate([x.ravel() for x in myarrs])
# 100000 loops, best of 3: 2.47 µs per loop
%timeit np.concatenate(list(map(lambda x: x.ravel(), myarrs)))
# 100000 loops, best of 3: 2.85 µs per loop
%timeit np.concatenate([x.flatten() for x in myarrs])
# 100000 loops, best of 3: 3.69 µs per loop
%timeit np.hstack([x.ravel() for x in myarrs])
# 100000 loops, best of 3: 5.69 µs per loop
%timeit np.hstack([np.hstack(i) for i in myarrs])
# 10000 loops, best of 3: 29.1 µs per loop

关于python - 展平包含不同形状的 numpy 数组的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64099396/

相关文章:

Python 统计文本文件的字长

python - 如何在 Python 中查找两个日期之间的星期一或任何其他工作日的数量?

Python PYPY Cffi 与 Numpy 数组

Python 列表插入函数和数据类型问题

python - 如何从数组中提取感兴趣的数字,同时将其与不同的数组进行比较?

python - 使用一个 glob.glob 而不是多个 glob.glob

python - 如何根据pandas中的关系列将id收集到列表中

c - Segmentation Fault 错误由于添加了一个小的 2d 数组

java - JSON - 对象数组中的对象数组

javascript - 如何在每次点击时向 JavaScript 数组添加元素