2017-07-03 92 views
1

我不知道我需要提前一個二維數組(a)的行數和列數:NumPy的:加入一維數組(行)到一個空二維數組在與NumPy Python的

a = np.empty((0,0), dtype=np.uint8) 
a.ndim 
2 

我設法每一行我從文件中讀取的字節的一維數組稱爲轉換line

我想添加/每行追加到a,所以我嘗試:

np.vstack((a,line))

但我得到: ValueError: all the input arrays must have same number of dimensions

如果我叫a=np.append(a,line),維數變1

你能幫忙嗎?

+1

你有沒有試過將所有的1d數組收集到列表中,並調用''np.array'''? – Anis

+0

@Anis你是什麼意思的「聚會」,我該怎麼做? – SebMa

+0

線從哪裏來?有可能簡化您的解決方案。 –

回答

1

無法將numpy數組附加到。最簡單的方法就是使用列表並在其上調用np.asarray()

a = [] 
# Build list from file 
a = np.asarray(a) 
1

你在正確的軌道上np.vstack。唯一的要求是堆疊的數組必須具有相同的列數。看看這個:

array = None # initialise array to None first 

for ...: # now inside the loop 
    line = ... # read line from somewhere and get something like [201, 81, 237, 230] 

    if array is None: 
     array = line 
    else: 
     array = np.vstack((array, line)) 

就性能而言,這實際上比僅在列表最後創建一個數組更浪費一點。這是numpy數組的問題 - 它們在維度上是不可變的。

+1

@COLDSPEED你是對的,我嘗試了兩種解決方案,Tom Wyllie的解決方案既快又簡單。 – SebMa

+0

@SebMa乾杯。 :) –

+0

@COLDSPEED再見:-) – SebMa