关于运算符&&与||,在python中是没有这两个运算符的,取而代之的是英文的and和or。其他的运算符则没有发生变动。
a.any()函数的官方解释是: Test whether any elements of an array evaluate to True along an axis。
也就是说针对一个list,判断list中的某个元素是否是真,此时只要有一个元素是真,list全部元素就全部输出。下面参考一个例子:
#!/usr/bin/python
#coding=utf8
import numpy as np
def f(data):
for val in data:
if val <= 0.6:
r1 = val*1
print ("this is <= 0.6 numbers", r1)
if val > 4:
r1 = val*1
print ("this is > 4 numbers ", r1)
def main():
data = np.arange(0.1, 5.1, 0.5)
if np.any(data > 0.3) and np.any(data <= 1):
r1 = data * 1
print (r1)
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]
this is <= 0.6 numbers 0.1
this is <= 0.6 numbers 0.6
this is > 4 numbers 4.1
this is > 4 numbers 4.6
在a.any()中,只要满足条件,整个list就是true的。而我在分段函数计算时,恰恰使用到了a.any()来判断list的范围,在后面的计算中,其实是整个list同时运算然后赋值了,也就将分段函数结果简化成了某一段的所有值。正确的计算分段函数有两种策略,要么像上面的函数f(),要么将list分段带入运算。