我需要生成一个用连续数字填充的numpy数组,但忽略特定数字。
例如,我需要一个0到5之间的numpy数组,但忽略3。结果将为[0,1,2,4,5,]
。
当我需要的阵列大小很大时,我当前的解决方案非常慢。这是我的测试代码,它用2m34s
在我的i7-6770机器上花费了Python 3.6.5
。
import numpy as np
length = 150000
for _ in range(10000):
skip = np.random.randint(length)
indexing = np.asarray([i for i in range(length) if i != skip])
因此,我想知道是否有更好的选择。谢谢
答案 0 :(得分:3)
不要忽略数字,而是将数组分成两个范围,而忽略要忽略的数字。然后使用np.arange
制作数组并将它们连接起来。
def range_with_ignore(start, stop, ignore):
return np.concatenate([
np.arange(start, ignore),
np.arange(ignore + 1, stop)
])