欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決Python報錯:ValueError:operands?could?not?be?broadcast?together?with?shapes

 更新時間:2023年02月20日 09:42:37   作者:來知曉  
這篇文章主要給大家介紹了關于解決Python報錯:ValueError:operands?could?not?be?broadcast?together?with?shapes的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

問題描述

在做矩陣數(shù)據(jù)的歸一化處理時,遇到個報錯:ValueError: operands could not be broadcast together with shapes (2,32) (2,)

源碼片段如下:

def normalization(X, set_axis): # for 2d matrix
    Xmin = np.min(X, axis=set_axis) # axis=0, the col min; else, the row min;
    Xmax = np.max(X, axis=set_axis)
    Xmu = np.mean(X, axis=set_axis)
#    print(Xmin.shape)
    X_norm = (X - Xmu) / (Xmax - Xmin)
    return X_norm

X = np.arange(0, 64).reshape(2, 32)
X_norm = normalization(X, 1)

根據(jù)矩陣乘法廣播擴展的原則,只要有一個維度的大小相同就能擴展,但這里卻失敗了,仔細定位了下,終于找到原因。

問題解決

問題根因

最后的原因竟然是:打印Xmin.shape后顯示的結(jié)果(2,),個人理解錯誤。 原以為:(2,)表示的是兩行一列的意思,而實際上(2,)表示只有1維,是個向量。

雖然該向量本質(zhì)也是一行兩列,但是為了向量運算方便,不區(qū)分方向、行列,而廣播支持的必須是矩陣,維度必須2維及以上。

所以解決方法是升維成二維矩陣,需要將Xmin擴維成矩陣,最后的shape表示為(2,1),表征2行1列二維數(shù)據(jù),之后就可以進行廣播運算了。

由此可以看出,對基礎知識的深入理解很重要。

修改方法

在源碼片段第4行后,添加如下其中一種代碼即可:

    # 擴維方法1
    Xmin= Xmin[:, np.newaxis]  # 從列的維度擴維, shape成(2, 1)
    Xmax= Xmax[:, np.newaxis]  # [np.newaxis, :]則是從行的維度擴維,shape成(1, 2)
    Xmu= Xmu[:, np.newaxis]

    # 擴維方法2
    Xmin = Xmin.reshape(X.shape[0], 1)
    Xmax = Xmax.reshape(X.shape[0], 1)
    Xmu = Xmu.reshape(X.shape[0], 1)

進階舉例

對該知識點的深入,可以小結(jié)為,[]表示一個維度,如只有一個[],則表示向量,兩個嵌套則表示二維矩陣,3個嵌套則表示三維矩陣。

要做廣播的基礎,首先是一維以上的矩陣,系統(tǒng)不支持一維向量的廣播擴展。

代碼示例如下:

import numpy as np

x1 = [1, 2]  # 一維向量,沒有行列之分,只有元素個數(shù)
x2 = [[1], [2]] # 二維矩陣,大小為:2*1
x3 = [[1, 2], [3, 4]] # 二維矩陣,大小為:2*2
x1 = np.array(x1)
x2 = np.array(x2)
x3 = np.array(x3)
print(x1.shape)
print(x2.shape)
print(x3.shape)

參考資料

How to Fix: ValueError: Operands could not be broadcast together with shapes?

總結(jié)

到此這篇關于解決Python報錯:ValueError:operands could not be broadcast together with shapes的文章就介紹到這了,更多相關Python報錯ValueError內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python實現(xiàn)批處理文件

    python實現(xiàn)批處理文件

    這篇文章主要為大家詳細介紹了python實現(xiàn)批處理文件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Python基礎之tkinter圖形化界面學習

    Python基礎之tkinter圖形化界面學習

    這篇文章主要介紹了Python基礎之tkinter圖形化界面學習,文中有非常詳細的代碼示例,對正在學習python基礎的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • python+requests+pytest接口自動化的實現(xiàn)示例

    python+requests+pytest接口自動化的實現(xiàn)示例

    這篇文章主要介紹了python+requests+pytest接口自動化的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • 使用python實現(xiàn)數(shù)據(jù)篩查

    使用python實現(xiàn)數(shù)據(jù)篩查

    一般數(shù)據(jù)篩查可以通過Python中的pandas庫來實現(xiàn),下面小編就來為大家介紹一下Python如何利用pandas實現(xiàn)數(shù)據(jù)篩查,感興趣的小伙伴可以一起學習一下
    2023-10-10
  • 在Python中輸入一個以空格為間隔的數(shù)組方法

    在Python中輸入一個以空格為間隔的數(shù)組方法

    今天小編就為大家分享一篇在Python中輸入一個以空格為間隔的數(shù)組方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python中常用檢測字符串相關函數(shù)匯總

    python中常用檢測字符串相關函數(shù)匯總

    這篇文章主要介紹了python中常用檢測字符串相關函數(shù),實例匯總了Python針對字符串數(shù)字、字母、大小寫等常用檢測函數(shù),非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • Python如何向現(xiàn)有的DataFrame添加新列示例代碼

    Python如何向現(xiàn)有的DataFrame添加新列示例代碼

    Pandas庫中的DataFrame是處理表格數(shù)據(jù)的主要數(shù)據(jù)結(jié)構(gòu),添加新列有多種方法,包括使用現(xiàn)有列的值、創(chuàng)建全為零或全為一的列、或者直接添加一個由特定值組成的列,這些方法在處理數(shù)據(jù)時非常有用,需要的朋友可以參考下
    2024-11-11
  • python多任務及返回值的處理方法

    python多任務及返回值的處理方法

    今天小編就為大家分享一篇python多任務及返回值的處理方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 使用python驗證代理ip是否可用的實現(xiàn)方法

    使用python驗證代理ip是否可用的實現(xiàn)方法

    驗證代理IP是否可用。原理是使用代理IP訪問指定網(wǎng)站,如果返回狀態(tài)為200,表示這個代理是可以使用的。這篇文章重點給大家介紹使用python驗證代理ip是否可用的實現(xiàn)方法,感興趣的朋友一起看看吧
    2018-07-07
  • Python學習筆記之裝飾器

    Python學習筆記之裝飾器

    這篇文章主要介紹了Python 裝飾器的相關資料,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-08-08

最新評論