python - 用 nditer 替换 pytorch 张量的 numpy 数组
问题描述
我正在寻找与 numpy 数组的 nditer 类似的 pytorch 张量功能,请参阅此链接和一个小示例。 https://discuss.pytorch.org/t/replacement-of-np-nditer-for-torch/64024?u=songqsh
解决方案
我同意这样的评论,即逐个元素地迭代对于与数组或张量进行交互是一个好主意。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
推荐阅读
- python-3.x - 替换数据框中单元格内的多个值 - Python/Pandas
- python - 为什么代码在 kivy 启动器中不起作用?(我错过了什么?)
- html - 如何垂直居中大于其父对象的对象?
- javascript - 如何用 JS/jQuery 解决这个问题(活动菜单类)的想法
- c++ - 标准库 to_string(double) 在 vs2015 中给出了错误的值。有什么解决办法吗?
- monitoring - 如何使用普罗米修斯获得休息服务器的请求数?
- java - 在多个 Spring Boot API 之间共享通用代码
- java - 再说一遍:如何解决“集合映射中的重复列”?
- excel - VBA .Range Two Brackets or Parentheses
- arrays - Swift过滤数组中的自定义对象