国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

對numpy中向量式三目運(yùn)算符詳解

2020-01-04 14:10:08
字體:
供稿:網(wǎng)友

如果用到數(shù)據(jù)篩選功能,可以使用x if condition else y的邏輯實(shí)現(xiàn)。如果使用的是純Python,可以使用不斷迭代的方式對每一組元素組合進(jìn)行相應(yīng)的判斷篩選。不過,如果使用numpy中的向量化計(jì)可以大大加速運(yùn)算的過程。

在numpy中有一個這個三目運(yùn)算的向量版本numpy.where。where方法可以接收三個參數(shù),第一個參數(shù)為條件向量,而第二、第三個參數(shù)可以是矩陣也可以是標(biāo)量。接下來做一下相應(yīng)功能的純Python功能實(shí)現(xiàn)以及向量方式實(shí)現(xiàn)。

記錄如下:

In [76]: xarr = np.array([1.1,1.2,1.3,1.4,1.5])In [77]: yarr = xarr + 1In [78]: xarrOut[78]: array([ 1.1, 1.2, 1.3, 1.4, 1.5])In [79]: yarrOut[79]: array([ 2.1, 2.2, 2.3, 2.4, 2.5])In [80]: cond = np.array([True,False,True,True,False])In [81]: condOut[81]: array([ True, False, True, True, False], dtype=bool)In [82]: result1 = [(x if c else y) for x,y,c in zip(xarr,yarr,cond)]In [83]: result1Out[83]: [1.1000000000000001, 2.2000000000000002, 1.3, 1.3999999999999999, 2.5]In [84]: result2 = np.where(cond,xarr,yarr)In [85]: result2Out[85]: array([ 1.1, 2.2, 1.3, 1.4, 2.5])

從浮點(diǎn)表示上,兩者有一點(diǎn)點(diǎn)小小的差異,在小數(shù)點(diǎn)后多位,通常在數(shù)值表示上可以忽略。不過,這里還是要進(jìn)行一下兩個結(jié)果的一致性判斷,因?yàn)橹耙部吹竭^Python在浮點(diǎn)表達(dá)上因?yàn)闄C(jī)器而產(chǎn)生的差異。

測試的結(jié)果如下:

In [87]: result1 == result2Out[87]: array([ True, True, True, True, True], dtype=bool)

從上面的結(jié)果可以看出,兩個計(jì)算結(jié)果是一致的。

以上這篇對numpy中向量式三目運(yùn)算符詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 磐安县| 于都县| 望都县| 资溪县| 新平| 通化市| 突泉县| 葵青区| 宁阳县| 依兰县| 岚皋县| 五华县| 沙洋县| 甘德县| 南城县| 上虞市| 镇坪县| 康乐县| 盖州市| 长岛县| 连平县| 吉安县| 襄垣县| 长垣县| 五华县| 浦北县| 渝北区| 潼南县| 灵石县| 任丘市| 湛江市| 锡林浩特市| 嘉峪关市| 镇平县| 且末县| 甘肃省| 勐海县| 高陵县| 都匀市| 凤翔县| 龙里县|