簡體   English   中英

numpy數組減法會創建具有不同維度的矩陣。 如何糾正呢?

[英]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.

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