Вы можете использовать нарезку:
In [14]: arr = np.arange(0, 10)
In [15]: arr
Out[15]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [16]: arr[::2]
Out[16]: array([0, 2, 4, 6, 8])
Таким образом, ваша функция будет просто выглядеть следующим образом:
def hopSamples1(x, N):
return x[::N]
Если вы настойчивы t объявить пустой массив заранее и заполнить его с помощью цикла, вы можете немного изменить свою функцию, чтобы выполнить одно из следующих действий.
Вы можете инициализировать пустой массив и продлить его другой ячейкой с каждой итерацией цикла. Обратите внимание, что новый массив создается и возвращается каждый раз.
def hopSamples2(x, N):
i = 0
n = len(x)
output = np.empty(shape = 0, dtype = x.dtype)
while i < n:
output = np.append(output, x[i])
i += N
return output
Альтернативная реализация будет создавать весь массив заранее, но установка значения в своих клетках один за другим.
def hopSamples3(x, N):
i = 0
n = len(x)
m = n/N
output = np.ndarray(shape = m, dtype = x.dtype)
while i < m:
output[i] = x[i * N]
i += 1
return output
Простого тест тест показывает, что использование нарезки самый быстрый подход при расширении массива один за другим является самым медленным:
In [146]: %time hopSamples1(arr, 2)
CPU times: user 21 µs, sys: 3 µs, total: 24 µs
Wall time: 28.8 µs
Out[146]: array([0, 2, 4, 6, 8])
In [147]: %time hopSamples2(arr, 2)
CPU times: user 241 µs, sys: 29 µs, total: 270 µs
Wall time: 230 µs
Out[147]: array([0, 2, 4, 6, 8])
In [148]: %time hopSamples3(arr, 2)
CPU times: user 35 µs, sys: 5 µs, total: 40 µs
Wall time: 45.8 µs
Out[148]: array([0, 2, 4, 6, 8])
проводков точных ошибок вы получаете были бы полезны в будущем, хотя ответы, которые вы получили, превосходны. – porglezomp
Кроме того, ваше название вопроса не соответствует вашему описанию вопроса. Способ «объявить (фактически, создать) пустой массив и заполнить его» - это «np.zeros» плюс нормальная установка индекса. Но то, что вы хотите сделать, в первую очередь не требует. – abarnert
Да, извините, я вижу это сейчас. Прошу прощения за недостаток знаний в Python, я начал использовать его только на прошлой неделе. Спасибо за ваши комментарии! – Hec46