You can use `np.sign`

in combination with `np.diff`

and `np.argwhere`

to obtain the indices of points where the lines cross (in this case, the points are `[ 0, 149, 331, 448, 664, 743]`

):

```
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 1000)
f = np.arange(0, 1000)
g = np.sin(np.arange(0, 10, 0.01) * 2) * 1000
plt.plot(x, f, '-')
plt.plot(x, g, '-')
idx = np.argwhere(np.diff(np.sign(f - g))).flatten()
plt.plot(x[idx], f[idx], 'ro')
plt.show()
```

First it calculates `f - g`

and the corresponding signs using `np.sign`

. Applying `np.diff`

reveals all the positions, where the sign changes (e.g. the lines cross). Using `np.argwhere`

gives us the exact indices.