假设一个像这样的数组:
a = np.arange(10)
我想删除索引 2 到 5 中的数字。我可以这样做:
a = np.delete(a, np.s_[2:6])
现在 a
包含 [0, 1, 6, 7, 8, 9]
.但是 Numba 不支持此功能,我需要使用 Numba 编译此代码。我需要仅使用“基本”NumPy 函数来完成相同的操作(这里的任何内容都可以: https://numba.pydata.org/numba-doc/dev/reference/numpysupported.html )。不幸的是
s_
对象不受支持。我怎样才能做到这一点?如果我需要进行多次调用或 tmp 数组,那也没关系。
最佳答案
无论您如何操作,都会创建临时数组。你可以使用一些非常简单的索引来获得你想要的:
a = np.arange(10)
a = np.delete(a, slice(2, 6))
s_
的文档几乎在笔记中告诉你如何做到这一点。对 s_
的一维调用主要是 slice
的简写.使用
delete
在这里可能是正确的选择,因为它比手动切片开始和结束并集中更有效地分配输出。
关于python - 在 NumPy 中,如何在不使用 np.s_ 的情况下从一维数组中提取范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62826317/