我有一个一维numpy数组-例如,
a = np.array([1, 4, 5, 7, 1, 2, 2, 4, 10])
Run Code Online (Sandbox Code Playgroud)
我想获得N个后续值都低于某个值x的第一个数字的索引。
在这种情况下,对于N=3和x=3,我将搜索第一个数字,该数字后面的三个条目都小于3。这将是a[4]。
只需通过循环遍历所有值即可轻松实现这一点for,但是我想知道是否有更干净,更有效的方法来实现此目的。
我在 C++ 中将函数作为参数传递时遇到问题。我在这里重新创建了一个最小的工作示例:
#include <iostream>
using namespace std;
void print(const double &func(double)) {
  cout << func(1) << endl;
}
class Obj {
  public:
  double MyFunction(double x);
  void PrintFunction();
};
void Obj::PrintFunction(){
  print(MyFunction);
}
double Obj::MyFunction(double x) {
  return x + 1;
}
int main() {
  Obj object;
  object.PrintFunction();
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,整体结构看起来很奇怪,但在完整的代码中更有意义(具体来说,我理想地寻找一个不涉及重组函数所有权的解决方案)。编译时出现错误error: invalid use of non-static member function double Obj::MyFunction(double),这表明我的调用方式有问题print(MyFunction)。我粗略的理解是MyFunction不能单独调用,但是没有包含多少指针、引用等,都成功地得到了代码进行编译。我应该如何正确打电话MyFunction?