在添加行的情況下,你最好的選擇是創建一個與數據集最終一樣大的數組,然后向它添加數據 row-by-row:
>>> import numpy >>> a = numpy.zeros(shape=(5,2)) >>> a array([[ 0., 0.], [ 0., 0.], [ 0., 0.], [ 0., 0.], [ 0., 0.]]) >>> a[0] = [1,2] >>> a[1] = [2,3] >>> a array([[ 1., 2.], [ 2., 3.], [ 0., 0.], [ 0., 0.], [ 0., 0.]])
次佳解決方案
NumPy數組是一個與列表非常不同的數據結構,它被設計為以不同的方式使用。您對hstack
的使用可能非常低效......每當您調用它時,現有數組中的所有數據都將被復制到一個新的數據中。 (append
函數將有相同的問題。)如果您想一次構建您的只有一個列的矩陣,最好將它保存在列表中,直到它完成,然后才轉換為一個數組。
例如
mylist = []
for item in data:
mylist.append(item)
mat = numpy.array(mylist)
item
可以是一個列表,一個數組或任何可迭代的結構,只要每個item
具有相同數量的元素。在這個特定的情況下(data
是一些迭代持有矩陣列),你可以簡單地使用
mat = numpy.array(data)
(還要注意,使用list
作為變量名可能不是一個好的做法,因為它掩蓋了內置類型的名稱,這可能會導致錯誤。