簡體   English   中英

將包含多個 numpy arrays 的列表轉換為單個 numpy 數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM