簡體   English   中英

堆疊二維數組numpy

[英]Stacking 2-D arrays numpy

讓說t是尺寸的2-d numpy的陣列(30,5)或實際上, (1,30,5)x是也形狀的numpy的陣列(1000, 5) 我正在嘗試將x中的2-D數據轉換為3-D數據,新數組中的每個矩陣都是x 1000行的30(連續)。 tx[:30]的元組上使用np.vstack時,或

t = np.vstack((t, x[:30]))

輸出的形狀是(60,5) ,但我希望它是(60,5) (2, 30, 5) 我該怎么做呢?

更新:我嘗試了dkv的建議,實現了:

t = np.random.rand(1,30,5)
for i, n in zip(x_data, np.arange(len(x_data))):
    l = len(x_data) - 29
    if n < l:
        t = np.vstack((t,x_data[n:n+30].reshape(1,30,5)))

t = np.delete(t, 0)
print(t[:2], t.shape)


>>> [ 0.38009933  0.82223491]
>>> (1691249,)

現在是一維的。 有什么想法嗎?

有很多方法。 一個是

np.r_['0,3,1', t, x[:30]]

r_是一種“通用連接器”。 在這種情況下,第一個參數指示其沿軸號0進行連接,以使數組參數3d並填充尺寸(如果需要的話),使原本為零的軸成為填充數組中的軸號1。

您需要重塑x [:30]切片的形狀以匹配t的尺寸,以便實際上將它們堆疊在正確的尺寸上。

t = np.ones((1,30,5))
x = np.ones((1000,5))
out = np.vstack((t, x[:30].reshape(1,30,5)))
out.shape
>>> (2L, 30L, 5L)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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