[英]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(連續)。 在t
和x[: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.