![](/img/trans.png)
[英]how to append row vectors to an empty matrix without knowing the size of the matrix using numpy?
[英]Trying to append numpy vectors into a matrix using a for loop
我正在嘗試通過將向量附加到矩陣來創建矩陣。 在for循環之后,我想得到的是一個矩陣(X rows, 10)
。 因此,如果for循環迭代15次,則矩陣將為(15, 10)
。
m_mat = np.array([])
for stuff in read_bytes(sys.argv[1]):
one_hot_vector = np.zeros((1, 10))
one_hot_vector[0, 3] = 1
m_mat = np.append(m_mat, one_hot_vector, axis = 0)
#m_mat = np.append(m_mat, one_hot_vector)
#m_mat = np.hstack((malware_matrix, one_hot_vector))
我不斷收到尺寸必須匹配的錯誤。
在循環中使用np.append
(或np.concatenate
)很尷尬,因為您必須以正確的“空”形狀開始。 您需要了解尺寸才能使用這些功能,尤其是在循環中。
這也很慢,因為每個追加都會創建一個全新的數組。
通過常規列表追加來收集列表中的列,並在最后一個np.concatenate
處創建數組,這樣更快,更簡單。
關於concatenate
是它需要一個列表(甚至很長的列表)或數組。 append
需要2個數組,即所謂的“ base”和“ addition”。 但在幕后,只需使用concatenate
。 因此,除了混亂之外,它幾乎無濟於事。
In [19]: np.array([]).shape
Out[19]: (0,)
In [23]: np.append(np.array([]), np.ones((1,10)),axis=0)
5164 values = ravel(values)
5165 axis = arr.ndim-1
-> 5166 return concatenate((arr, values), axis=axis)
ValueError: all the input arrays must have same number of dimensions
您從(0,)形狀數組開始,然后嘗試將(1,10)數組附加到第一軸上。 一個是1d,另一個是2d-它們沒有相同的尺寸數!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.