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

詳解Numpy中的廣播原則/機制

 更新時間:2018年09月20日 09:21:11   作者:Dereen  
這篇文章主要介紹了Numpy中的廣播原則/機制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

廣播的原則

如果兩個數(shù)組的后緣維度(從末尾開始算起的維度)的軸長度相符或其中一方的長度為1,則認為它們是廣播兼容的。廣播會在缺失維度和(或)軸長度為1的維度上進行。

在上面的對arr每一列減去列平均值的例子中,arr的后緣維度為3,arr.mean(0)后緣維度也是3,滿足軸長度相符的條件,廣播會在缺失維度進行。

這里有點奇怪的是缺失維度不是axis=1,而是axis=0,個人理解是缺失維度指的是兩個arr除了軸長度匹配的維度,在上面的例子中,正好是axis=0。這塊歡迎指正

arr.mean(0)沿著axis=0廣播,可以看作是把arr.mean(0)沿著豎直方向復制4份,即廣播的時候arr.mean(0)相當于一個shape=(4,3)的數(shù)組,數(shù)組的每一行均相同,均為arr.mean(0)

為了了解這個原則,首先我們來看一組例子:

# 數(shù)組直接對一個數(shù)進行加減乘除,產生的結果是數(shù)組中的每個元素都會加減乘除這個數(shù)。
In [12]: import numpy as np
In [13]: a = np.arange(1,13).reshape((4, 3))
In [14]: a * 2
Out[14]: array([[ 2, 4, 6],
    [ 8, 10, 12],
    [14, 16, 18],
    [20, 22, 24]])
# 接下來我們看一下數(shù)組與數(shù)組之間的計算
In [17]: b = np.arange(12,24).reshape((4,3))
In [18]: b
Out[18]: array([[12, 13, 14],
    [15, 16, 17],
    [18, 19, 20],
    [21, 22, 23]])
In [19]: a + b
Out[19]: array([[13, 15, 17],
    [19, 21, 23],
    [25, 27, 29],
    [31, 33, 35]])
In [20]: c = np.array([1,2,3])
In [21]: a+c
Out[21]: array([[ 2, 4, 6],
    [ 5, 7, 9],
    [ 8, 10, 12],
    [11, 13, 15]])
In [22]: d = np.arange(10,14).reshape((4,1))
In [23]: d
Out[23]: array([[10],
    [11],
    [12],
    [13]])
In [24]: a + d
Out[24]: array([[11, 12, 13],
    [15, 16, 17],
    [19, 20, 21],
    [23, 24, 25]])
# 從上面可以看出,和線性代數(shù)中不同的是,m*n列的m行的一維數(shù)組或者n列的一維數(shù)組也是可以計算的。

這是為什么呢?這里要提到numpy的廣播原則:

如果兩個數(shù)組的后緣維度(從末尾開始算起的維度)的軸長度相符或其中一方的長度為1,則認為它們是廣播兼容的。廣播會在缺失維度和(或)軸長度為1的維度上進行。

在上面的代碼中,a的維度是(4,3),c的維度是(1,3);d的維度是(4,1)。所以假設有兩個數(shù)組,第一個的維度是(x_1, y_1, z_1),另一個數(shù)組的維度是(x_2, y_2, z_2),要判斷這兩個數(shù)組能不能進行計算,可以用如下方法來判斷:

if z_1 == z_2 or z_1 == 1 or z_2 == 1:
 if y_1 == y_2 or y_1 == 1 or y_2 == 1:
  if x_1 == x_2 or x_1 == 1 or x_2 == 1:
   可以運算
  else:
   不可以運算
 else:
  不可以運算
else:
 不可以運算

這里需要注意:(3,3,2)和(3,2)是可以運算的,因為對于二維數(shù)組(3,2)也可以表示為(1,3,2),套用上述的規(guī)則是完全適用的,同理:(4,2,5,4)和(2,1,4)也是可以進行運算的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 基于Python實現(xiàn)PPT合并小工具

    基于Python實現(xiàn)PPT合并小工具

    在日常工作和學習中,如果需要將多個PPT文件合并成一個文件,手動操作可能會非常繁瑣和耗時,所以本文將使用Python制作一個簡單的PPT合并小工具,希望對大家有所幫助
    2024-01-01
  • Python爬蟲爬取微博熱搜保存為 Markdown 文件的源碼

    Python爬蟲爬取微博熱搜保存為 Markdown 文件的源碼

    這篇文章主要介紹了Python爬蟲爬取微博熱搜保存為 Markdown 文件,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • python環(huán)境下OPenCV處理視頻流局部區(qū)域像素值

    python環(huán)境下OPenCV處理視頻流局部區(qū)域像素值

    這篇文章主要為大家介紹了python環(huán)境下OPenCV處理視頻流局部區(qū)域像素值的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-11-11
  • 利用Matlab繪制各類特殊圖形的實例代碼

    利用Matlab繪制各類特殊圖形的實例代碼

    作為一個功能強大的工具軟件,Matlab具有很強的圖形處理功能,提供了大量的二維、三 維圖形函數(shù),這篇文章主要給大家介紹了關于如何利用Matlab繪制各類特殊圖形的相關資料,需要的朋友可以參考下
    2021-07-07
  • Python批量刪除txt文本指定行的思路與代碼

    Python批量刪除txt文本指定行的思路與代碼

    在深度學習項目中常常會處理各種數(shù)據(jù)集,下面這篇文章主要給大家介紹了關于Python批量刪除txt文本指定行的思路與代碼,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • tensorflow 保存模型和取出中間權重例子

    tensorflow 保存模型和取出中間權重例子

    今天小編就為大家分享一篇tensorflow 保存模型和取出中間權重例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 用PyQt進行Python圖形界面的程序的開發(fā)的入門指引

    用PyQt進行Python圖形界面的程序的開發(fā)的入門指引

    這篇文章主要介紹了用PyQt進行Python圖形界面的程序的開發(fā)的入門指引,來自于IBM官方網(wǎng)站技術文檔,需要的朋友可以參考下
    2015-04-04
  • Python實用日期時間處理方法匯總

    Python實用日期時間處理方法匯總

    這篇文章主要介紹了Python實用日期時間處理方法匯總,本文講解了獲取當前datetime、獲取當天date、獲取明天/前N天、獲取當天開始和結束時間(00:00:00 23:59:59)、獲取兩個datetime的時間差、獲取本周/本月/上月最后一天等實用方法 ,需要的朋友可以參考下
    2015-05-05
  • python os.path.isfile()因參數(shù)問題判斷錯誤的解決

    python os.path.isfile()因參數(shù)問題判斷錯誤的解決

    今天小編就為大家分享一篇python os.path.isfile()因參數(shù)問題判斷錯誤的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Django+uni-app實現(xiàn)數(shù)據(jù)通信中的請求跨域的示例代碼

    Django+uni-app實現(xiàn)數(shù)據(jù)通信中的請求跨域的示例代碼

    這篇文章主要介紹了Django+uni-app實現(xiàn)數(shù)據(jù)通信中的請求跨域的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10

最新評論