![](/img/trans.png)
[英]How to convert a python list containing two numpy arrays into a numpy array?
[英]Convert list containing multiple numpy arrays to single numpy array
我有一个看起来像这样的列表(这是一个子集):
[array([[1.]]), array([[0.95105652]]), array([[0.80901699]]), array([[0.58778525]]), array([[0.30901699]]), array([[-2.77555756e-14]]), array([[-0.30901699]]), array([[-0.58778525]]), array([[-0.80901699]]), array([[-0.95105652]]), array([[0.95105652]]), array([[0.9045085]]), array([[0.76942088]]), array([[0.55901699]]), array([[0.29389263]]), array([[1.70086167e-13]]), array([[-0.29389263]])
本质上,每个元素都是一个 numpy 数组。 它的尺寸是
np.shape(ls)
(100, 1, 1)
我不太明白第三个维度的来源,但我想要的是从这个列表中提取所有 100 个值,并将其放在一个 numpy 维度数组中(100,)
我怎样才能做到这一点?
您可以构建一个理解并将其转换为 numpy 数组:
result = np.array([i[0][0] for i in ls])
以下是您的示例的一些 timeit 结果:
>>> timeit.timeit("""np.ravel(ls)""", globals = globals(),number=100000)
1.2485979999983101
>>> timeit.timeit("""np.transpose(ls)[0][0]""", globals = globals(),number=100000)
1.4232207000022754
>>> timeit.timeit("""np.array([i[0][0] for i in ls])""", globals = globals(),number=100000)
0.7894333000003826
使用大小为 100 的列表,它变为:
>>> timeit.timeit("""np.ravel(ls)""", globals = globals(),number=100000)
5.593053000000509
>>> timeit.timeit("""np.transpose(ls)[0][0]""", globals = globals(),number=100000)
6.153891400001157
>>> timeit.timeit("""np.array([i[0][0] for i in ls])""", globals = globals(),number=100000)
4.391332800001692
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.