Самый быстрый способ создать массив с последовательным целым числом, но игнорировать конкретное число - PullRequest
0 голосов
/ 08 сентября 2018

Мне нужно сгенерировать заполненную массивную последовательность последовательными числами, но игнорировать конкретное число.

Например, мне нужен массив от 0 до 5, но игнорировать 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])

Следовательно, я хотел бы знать, есть ли лучший. Спасибо

1 Ответ

0 голосов
/ 08 сентября 2018

Вместо того, чтобы игнорировать число, разделите ваш массив на два диапазона, оставив число, которое вы игнорируете. Затем используйте np.arange, чтобы создать массивы и объединить их.

def range_with_ignore(start, stop, ignore):
    return np.concatenate([
        np.arange(start, ignore),
        np.arange(ignore + 1, stop)
    ])
...