我正在寻找类似的功能,为pytorch张量作为nditer的numpy数组,请参阅此链接与一个小例子。https://discuss.pytorch.org/t/replacement-of-np-nditer-for-torch/64024?u=songqsh
发布于 2019-12-14 13:42:20
我同意这样的观点,即逐个元素迭代是与数组或张量交互的一个好主意。nditer
有很多功能,这里只是一个遍历张量中所有元素的迭代,它返回元素的坐标和元素本身:
def deep_iter(data, ix=tuple()):
try:
for i, element in enumerate(data):
yield from deep_iter(element, ix + (i,))
except:
yield ix, data
例如,在pytorch论坛上,它可以使用如下所示:
new_values = {}
for i, value in deep_iter(a):
if all(map(lambda x: 0 < x < (a.shape[1] - 1), i)):
new_values[i] = calc_average(i, a) #write func to calc average
for i, new_value in new_values.items():
a[i] = new_value
https://stackoverflow.com/questions/59332694
复制