首先說(shuō)明一下,在python中是沒(méi)有&&及||這兩個(gè)運(yùn)算符的,取而代之的是英文and和or。其他運(yùn)算符沒(méi)有變動(dòng)。
接著重點(diǎn)要說(shuō)明的是python中的a.any(),我之所以會(huì)涉及到這個(gè)函數(shù),是因?yàn)槲以谠O(shè)計(jì)某個(gè)分段數(shù)值函數(shù)時(shí)由于不細(xì)心犯的錯(cuò)誤引起的。a.any(),根據(jù)官方解釋?zhuān)?
Test whether any elements of an array evaluate to True along an axis.
即針對(duì)的是一個(gè)list,判斷l(xiāng)ist中的某個(gè)元素是否為真,此時(shí)只要有一個(gè)元素為真,list元素全部輸出。下面一個(gè)例子更直觀的做了解釋?zhuān)?
#!/usr/bin/python
#coding=utf8
importnumpy as np
deff(data):
forval indata:
ifval <=0.6:
r1=val*1
print"this is <= 0.6 numbers", r1
ifval > 4:
r1=val*1
print"this is > 4 numbers ", r1
defmain():
data=np.arange(0.1,5.1,0.5)
ifnp.any(data > 0.3)andnp.any(data <=1):
r1=data *1
printr1
f(data)
if__name__=='__main__':
main()
對(duì)應(yīng)的輸出是:
[0.1 0.6? 1.1? 1.6? 2.1? 2.6? 3.1? 3.6? 4.1? 4.6]
thisis<=0.6 numbers 0.1
thisis<=0.6 numbers 0.6
thisis> 4numbers? 4.1
thisis> 4numbers? 4.6
在a.any()中,只要滿足條件,整個(gè)list就是true的。而我在分段函數(shù)計(jì)算時(shí),恰恰使用到了a.any()來(lái)判斷l(xiāng)ist的范圍,在后面的計(jì)算中,其實(shí)是整個(gè)list同時(shí)運(yùn)算然后賦值了,也就將分段函數(shù)結(jié)果簡(jiǎn)化成了某一段的所有值。正確的計(jì)算分段函數(shù)有兩中策略,要么像上面的函數(shù)f(),要么將list分段帶入運(yùn)算。
這個(gè)問(wèn)題我糾結(jié)了一個(gè)晚上,最后才發(fā)現(xiàn)是a.any()的問(wèn)題。最開(kāi)始使用的時(shí)候,其真正的用法沒(méi)有具體熟悉,同時(shí)我也該反省我自己,對(duì)python語(yǔ)言掌握的實(shí)在太菜了!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

