使用连续整数创建numpy数组但忽略特定数字的最快方法

问题描述 投票:1回答:1

我需要生成一个连续数字的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])

因此,我想知道是否有更好的一个。谢谢

python python-3.x numpy numpy-ndarray
1个回答
3
投票

不要忽略数字,而是将数组拆分为两个范围,留下你忽略的数字。然后使用np.arange制作数组并连接它们。

def range_with_ignore(start, stop, ignore):
    return np.concatenate([
        np.arange(start, ignore),
        np.arange(ignore + 1, stop)
    ])
© www.soinside.com 2019 - 2024. All rights reserved.