我有一个如下所示的列表
>>> 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 库中的一些标准函数,而无需显式循环。有人可以解释一下吗?
您无法使用对象数组对操作进行向量化(在快速低级操作的意义上)。
你必须使用循环。
你可以选择:
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])
]