numpy中有功能吗?

Rom*_*man 4 python numpy series scipy pandas

我有三个系列.我需要按元素执行以下操作:

  1. 比较第一和第二系列的值.
  2. 如果第一个更大,则从第三个系列中取出元素的弧 - 窦.
  3. 否则采用弧余弦.

这是我到目前为止所做的事情:

numpy.if(numpy.less(s1,s2),numpy.arcsin(s3),numpy.arccos(s3))
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果不起作用,因为numpy.if不存在.有办法克服这个问题吗?

unu*_*tbu 5

我想你正在寻找numpy.where:

np.where(s1<s2, np.arcsin(s3), np.arccos(s3))
Run Code Online (Sandbox Code Playgroud)

对于1D输入,

where(condition, [x, y])
Run Code Online (Sandbox Code Playgroud)

相当于

[xv if c else yv for (c,xv,yv) in zip(condition,x,y)]
Run Code Online (Sandbox Code Playgroud)

  • @Roman一个用例是你必须将该函数作为另一个函数的参数传递.你不能做`call_a_function(<,a,b)`你必须做`call_a_function(numpy.less,a,b)`.这就是python中存在`operator`模块的原因. (4认同)