首先說明一下,在python中是沒有&&及||這兩個運算符的,取而代之的是英文and和or。其他運算符沒有變動。
接著重點要說明的是python中的a.any(),我之所以會涉及到這個函數,是因為我在設計某個分段數值函數時由于不細心犯的錯誤引起的。a.any(),根據官方解釋:
Test whether any elements of an array evaluate to True along an axis.
即針對的是一個list,判斷list中的某個元素是否為真,此時只要有一個元素為真,list元素全部輸出。下面一個例子更直觀的做了解釋:
#!/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()
對應的輸出是:
[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()中,只要滿足條件,整個list就是true的。而我在分段函數計算時,恰恰使用到了a.any()來判斷list的范圍,在后面的計算中,其實是整個list同時運算然后賦值了,也就將分段函數結果簡化成了某一段的所有值。正確的計算分段函數有兩中策略,要么像上面的函數f(),要么將list分段帶入運算。
這個問題我糾結了一個晚上,最后才發現是a.any()的問題。最開始使用的時候,其真正的用法沒有具體熟悉,同時我也該反省我自己,對python語言掌握的實在太菜了!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
