簡體   English   中英

嘗試使用for循環將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.

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