[英]Numpy array subtraction creates a matrix with different dimension. How to correct that?
我正在嘗試使用Python創建一個簡單的神經網絡(我知道有圖書館,但是我正在從頭開始構建一個簡單的神經網絡,以更加熟悉所采取的每一步),其中一部分是計算真實之間的差異。標簽和預測標簽。
我在<2059 x 1>中具有真實標簽,在<2059 x 1>中也具有預測標簽
兩者都在np.array中
我希望一個簡單的
l2_error=tag_train-l2
會做的工作。 (l2是預測的標簽,tag_train是真實的標簽)
但是我得到的是一個<2059x2059>矩陣。 似乎此操作正在減去所有可能的元素組合。 為什么會這樣? 我知道我可能可以運行for
循環來完成工作,因為我想知道為什么程序會產生此結果?
兩個dtypes均為float64,btw。 我認為這並不重要,但以防萬一需要此信息。
正如您在評論中指出的那樣,發生的事情是tag_train
是一個長度為2059的一維數組,而l2
應該是一個具有2059行和1列的二維數組。
因此,當您嘗試進行減法運算時,將導致二維數組包含2059行和2059列。
如果您100%確定l2僅是一列,則可以在進行減法之前重新調整該數組的形狀以使其成為一維。 喜歡 -
l2.reshape((l2.shape[0],))
示例/演示-
In [1]: import numpy as np
In [2]: l1 = np.array([1,2,3,4])
In [3]: l2 = np.array([[5],[6],[7],[8]])
In [7]: l2.shape
Out[7]: (4, 1)
In [8]: l2-l1
Out[8]:
array([[4, 3, 2, 1], #Just to show that you get the behaviour when arrays are in
[5, 4, 3, 2], #different dimensions.
[6, 5, 4, 3],
[7, 6, 5, 4]])
In [19]: l2 = l2.reshape((l2.shape[0],))
In [25]: l2 = l2.reshape((l2.shape[0],))
In [26]: l2-l1
Out[26]: array([4, 4, 4, 4])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.