考虑元组列表,例如:
a = [(1,2), (3,4)]
我经常发现自己试图将这样的列表解压缩为每个列值的单独列表,例如:
b,c = list(zip(*a))
在这种情况下, b 将是一个包含值的列表 1 和 3 .
b
1
3
我经常发现自己缺乏自我 b 和 c 要成为numpy数组,请不要列出。 在这种情况下,我通常会做的是:
c
b,c = list(zip(*a)) b = np.array(b) c = np.array(c)
最后两行看起来很累赘。 有没有任何方法可以将列表直接解压缩为两个numpy数组,而不直接通过 numpy.array ?
numpy.array
非常感谢。
您的元组列表可以通过调用转换为二维numpy数组 np.array 然后,这可以被转置,然后使用元组分配沿着第一维度被解包:
np.array
b, c = np.array(a).T
这里给出:
>>> import numpy as np >>> a = [(1,2), (3,4)] >>> b, c = np.array(a).T # or: np.array(a).transpose() >>> b array([1, 3]) >>> c array([2, 4])
注意:您将有一个临时数组,其元素数量与 a ,因此它可能比原始解决方案的内存效率更低,特别是如果您要拆包到更多的1d阵列中。
a