首頁 資訊 python卡路里健康餐程序 python燃燒卡路里

python卡路里健康餐程序 python燃燒卡路里

來源:泰然健康網(wǎng) 時間:2024年12月08日 11:50

文章目錄

2.15 Python 中的廣播 Broadcasting in Python

我整理的一些關(guān)于Python的項目學(xué)習(xí)資料+視頻(附講解~~)和大家一起分享、學(xué)習(xí)一下:

 https://d.51cto.com/wO38C1

2.15 Python 中的廣播 Broadcasting in Python

觀察上圖。
這是一個不同食物(每100g)中不同營養(yǎng)成分的卡路里含量表格,表格為3行4列。

列:食物種類,蘋果,牛肉,雞蛋,土豆。行:營養(yǎng)成分,碳水化合物,蛋白質(zhì),脂肪。

現(xiàn)在想要計算不同食物中不同營養(yǎng)成分中的卡路里百分比。
以計算蘋果中的碳水化合物卡路里百分比含量為例。
首先計算蘋果(100g)中三種營養(yǎng)成分卡路里總和56+1.2+1.8 = 59,然后用56/59 = 94.9%算出結(jié)果??梢钥闯鎏O果中的卡路里大部分來自于碳水化合物,而牛肉則不同。

對于其他食物,計算方法類似。先按列求和,得到每種食物的三種營養(yǎng)成分總和,然后分別用不同營養(yǎng)成分的卡路里數(shù)量除以總和,計算百分比。

問題來了,是否可以不用顯示的for循環(huán)完成所有計算?

我們把上面的表格等于 3 x 4 的矩陣A。然后用1行代碼對列求和,得到4個數(shù)字,表示4種食物的卡路里總量。最后用第二行代碼把每個元素都除以對應(yīng)的列之和,得到每種食物每種營養(yǎng)成分的百分比。

代碼如下

運(yùn)行結(jié)果

注意: A.sum(axis = 0),axis表示沿著哪個軸求和。0表示是垂直的,也就是列;1表示水平的,也就是行。

percentage=100*A/cal.reshape(1,4)則調(diào)用了numpy中的廣播機(jī)制。

這里使用3x4的矩陣A除以 1x4 的矩陣cal。從技術(shù)上說,執(zhí)行第一行代碼后,變量cal已經(jīng)是一個1x4矩陣了,不需要reshape(重塑)成1x4,似乎有點(diǎn)多余。但是,當(dāng)我們寫代碼時不確定矩陣維度(尺寸)的時候,通常會對矩陣進(jìn)行重塑來確保得到我們想要的(正確的)列向量或行向量。

reshape是一個常用時間的操作,時間復(fù)雜度是O(1),它的調(diào)用代價極低。不要害怕使用reshape來得到你需要的矩陣形狀。

現(xiàn)在的問題是,你怎么讓一個3x4的矩陣除以1x4的矩陣呢?

例1

如上圖。在python中,當(dāng)一個 4x1 的列向量與一個常數(shù)做加法時,實(shí)際上會將常數(shù)擴(kuò)展為一個 4x1 的列向量,然后兩者做逐元素加法,結(jié)果就是右邊的這個向量。這種廣播機(jī)制對于行向量和列向量均可以使用。前面介紹邏輯回歸時候曾經(jīng)說過,常數(shù)b也是這樣擴(kuò)展的。

例2

再看上圖。用一個 2x3 的矩陣和一個 1x3 的矩陣相加,或者擴(kuò)展到一般情況,讓一個m x n的矩陣和一個1 x n的矩陣相加。python把1xn的矩陣復(fù)制m次,把它變成一個m x n的矩陣。所以,上圖中1x3的矩陣會變成2x3的矩陣,然后再和第一個的2x3矩陣逐個元素相加。這里就和我們計算percentage時候處理方法完全一樣了,只不過計算percentage用的是除法。

例3

如上圖。這里相當(dāng)于是一個 2x3 或者說m x n 的矩陣加上一個 2x1 或者說m x 1的矩陣。在進(jìn)行運(yùn)算時,會先將m x 1矩陣水平復(fù)制n次,變成一個 m x n的矩陣,然后再逐個元素相加。

總結(jié):python中廣播的通用規(guī)則

對于1個m x n的矩陣,如果要加減乘除1個 1 x n的矩陣,python首先會把1 x n的矩陣復(fù)制m次(按行復(fù)制),變成一個m x n的矩陣,然后逐個元素加減乘除。對于1個m x n的矩陣,如果要加減乘除1個 m x 1的矩陣,python首先會把m x 1的矩陣復(fù)制n次(按列復(fù)制),同樣變成一個m x n的矩陣,然后逐個元素加減乘除。對于1個m x 1的矩陣(列向量),如果要加減乘除1個實(shí)數(shù),那就是把實(shí)數(shù)復(fù)制m次,得到另外1個m x 1的矩陣,然后逐個元素加減乘除對于1個1 x n的矩陣(行向量),如果要加減乘除1個實(shí)數(shù),那就是把實(shí)數(shù)復(fù)制n次,得到另外1個1 x n的矩陣,然后逐個元素加減乘除

在numpy文檔中搜索broadcasting可以獲得詳細(xì)說明。

習(xí)慣用Matlab/Octave 編程的人,可能會用有類似功能的函數(shù)bsxfun。不過NN只需要python就可以了。

整理的一些關(guān)于Python的項目學(xué)習(xí)資料+視頻(附講解~~),需要自取

 https://d.51cto.com/wO38C1

本文章為轉(zhuǎn)載內(nèi)容,我們尊重原作者對文章享有的著作權(quán)。如有內(nèi)容錯誤或侵權(quán)問題,歡迎原作者聯(lián)系我們進(jìn)行內(nèi)容更正或刪除文章。

收藏 評論 舉報

相關(guān)文章

相關(guān)知識

健身打卡,燃燒你的卡路里
健康輕食,讓你在夏日里燃燒更多卡路里!
燃燒你的卡路里!
靠性愛燃燒卡路里 ,靠譜不?
燃燒卡路里
燃燒卡路里 健康瘦身的必要條件
燃燒卡路里!每日健身打卡計劃第二期火爆來襲!
減肥必看!燃脂必做!8大運(yùn)動快速燃燒卡路里!
燃燒卡路里,怎樣才合理
(全民健身)趣味燃燒卡路里挑戰(zhàn)賽即將開賽

網(wǎng)址: python卡路里健康餐程序 python燃燒卡路里 http://www.u1s5d6.cn/newsview363387.html

推薦資訊