Использование numpy.nditer в Hy
В python следующий код выполняет итерацию массива numpy (цикл for), и значения массива numpy изменяются:
import numpy
a08_1 = numpy.arange(8).astype(numpy.uint8)
# a08_1: array([0, 1, 2, 3, 4, 5, 6, 7], dtype=uint8)
for x in numpy.nditer(a08_1, op_flags=['readwrite']):
x[...] = 255 if x == 1 else 0
#
# a08_1: array([ 0, 255, 0, 0, 0, 0, 0, 0], dtype=uint8)
Можно ли сделать аналогично в Hy? Я могу создать итератор с (numpy.nditer a08_1), но я не знаю, как следовать.
Благодарю.
1 ответ
Решение
Эквивалент Hy выглядит следующим образом.
(import numpy)
(setv a08-1 (-> (numpy.arange 8) (.astype numpy.uint8)))
(for [x (numpy.nditer a08-1 :op-flags ["readwrite"])]
(assoc x Ellipsis (if (= x 1) 255 0)))