【发布时间】:2022-01-27 08:00:52
【问题描述】:
我处于需要动态切片可变形状/尺寸数组的情况。所以我组装了一个字符串来访问它。
这在访问数据时可以正常工作。
some_data = eval("arr[:,[ci]]")
#or
some_data = eval("arr[:,[ci],:]")
#or
some_data = eval("arr[:,:,:,[ci]]")
#etc.
但是eval() 的限制使我无法使用这种方法分配。
eval("arr[:,[ci]]") = some_data
有没有办法不用eval()就可以切片?
【问题讨论】:
-
使用一些标签,因为切片不是 numpy 独有的
-
“我需要动态切片可变形状/尺寸的数组”“动态”是什么意思?你收到什么样的输入,结果需要发生什么?你能控制输入格式吗?该数据需要支持/指定哪些类型的操作?
-
"使用一些标签,因为切片不是 numpy 独有的" 你应该根据 你想要切片的东西来使用标签。
python和numpy在这里有意义,假设您正在谈论一个 Numpy ndarray(这对于您显示的语法是有意义的);如果其他人必须使用pytorch来重现问题,pytorch仅 是相关标记。 -
好吧,我在这里可以互换地使用 numpy 和 torch 数据,我愿意使用所有 3 种方法来解决它
-
好的,所以...接受一个索引元组作为输入,并用它来切片?像
:这样的切片索引由内置的slice类型表示。