我有一个像这样的 numpy 数组,
nums = np.array([17, 18, 19, 20, 21, 22, 23])
如何以 pythonic 方式从这个数组中过滤掉素数?我知道要做一个简单的过滤,比如,
nums[nums > 20] #array([21, 22, 23])
有没有办法传递 lambda 函数进行过滤?
预期输出:array([17, 19, 23])
原文由 user6084800 发布,翻译遵循 CC BY-SA 4.0 许可协议
我这样做的方式是使用 gmpy 或开发了良好素性测试算法的第 3 方库。 Miller-Rabin 素数测试通常是一个非常安全(而且快速!)的选择。如果你只是想要慢的方式,你可以这样做:
如果你想过滤掉素数,只需在 pbools 变量上调用 np.invert 。任何谓词也是如此。您还可以将 lambda 传递给矢量化。例如,假设我们只想要与 5 相差 1 的质数(无论出于何种原因)。