连接元素为 numpy 数组的元组列表

问题描述 投票:0回答:1

我有一个如下所示的列表

>>> x
[
(array([1. +0.j , 0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j ]), array([0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j , nan+0.j ])), 
(array([1. +0.j , 0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j ]), array([0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j , nan+0.j ])), 
(array([1. +0.j , 0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j ]), array([0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j , nan+0.j ]))
]

我的要求是将此数组连接成两个一维数组,以便每个元组中的第一个元素连接成一个一维数组,第二个元素连接成第二个一维数组。

预期最终结果

[
[1. +0.j , 0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j, 1. +0.j , 0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j, 1. +0.j , 0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j],
[0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j , nan+0.j, 0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j , nan+0.j, 0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j , nan+0.j]
]

理想的解决方案是使用 numpy 库中的一些标准函数,而无需显式循环。有人可以解释一下吗?

numpy transpose
1个回答
1
投票

您无法使用对象数组对操作进行向量化(在快速低级操作的意义上)。

你必须使用循环。

你可以选择:

out = [np.concatenate(y) for y in zip(*x)]

输出:

[
array([1. +0.j , 0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j, 1. +0.j , 0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j, 1. +0.j , 0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j]),
array([0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j , nan+0.j, 0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j , nan+0.j, 0.5+0.5j, 0. +0.j , 0.5-0.5j, 1. +0.j , nan+0.j])
]
© www.soinside.com 2019 - 2024. All rights reserved.