在Hy中使用numpy.nditer

时间:2017-09-12 03:01:46

标签: python arrays numpy 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 个答案:

答案 0 :(得分: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)))