Python numpy中是否有通用的if函数?
我有三个系列。我需要按元素执行以下操作:Python numpy中是否有通用的if函数?,python,numpy,scipy,pandas,series,Python,Numpy,Scipy,Pandas,Series,我有三个系列。我需要按元素执行以下操作: 比较第一个系列和第二个系列的值 如果第一个较大,则从第三个系列中取元素的弧窦 否则取弧余弦 到目前为止,我做到了这一点: numpy.if(numpy.less(s1,s2),numpy.arcsin(s3),numpy.arccos(s3)) 不幸的是,if不起作用,因为numpy.if不存在。有没有办法克服这个问题?我想您正在寻找: 相当于 [xv if c else yv for (c,xv,yv) in zip(condition,x,y)]
numpy.if(numpy.less(s1,s2),numpy.arcsin(s3),numpy.arccos(s3))
不幸的是,if不起作用,因为
numpy.if
不存在。有没有办法克服这个问题?我想您正在寻找:
相当于
[xv if c else yv for (c,xv,yv) in zip(condition,x,y)]
联合国大学做得很好。我建议使用一个不带
的等价物,其中(但无论如何带numpy
)
取第一项(False,0.1001674211615598,1.4706289056333368)
:2tanks!顺便说一句,我不知道用例是必须将函数作为其他函数的参数传递。您不能执行调用函数(
where(condition, [x, y])
[xv if c else yv for (c,xv,yv) in zip(condition,x,y)]
import numpy as np
s1=[2,1,2,5,4,6]
s2=[1,2,4,5,7,8]
s3=[0.1,0.4,0.5,0.6,0.1,0.1]
res = [xv if c else yv for (c,xv,yv) in zip([si1<si2
for si1,si2 in zip(s1,s2)], list(np.arcsin(s3)), list(np.arccos(s3)))]
>>>
[(False, 0.1001674211615598, 1.4706289056333368), (True, 0.41151684606748806, 1.1592794807274085), (True, 0.52359877559829893, 1.0471975511965979), (False, 0.64350110879328437, 0.9272952180016123), (True, 0.1001674211615598, 1.4706289056333368), (True, 0.1001674211615598, 1.4706289056333368)]
>>> res
[1.4706289056333368, 0.41151684606748806, 0.52359877559829893,
0.9272952180016123, 0.1001674211615598, 0.1001674211615598]