Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过列表索引对数组进行切片的python方法_Python_Numpy_Pytorch_Numpy Slicing - Fatal编程技术网

通过列表索引对数组进行切片的python方法

通过列表索引对数组进行切片的python方法,python,numpy,pytorch,numpy-slicing,Python,Numpy,Pytorch,Numpy Slicing,我想知道执行批量切片(torch/numpy)的最佳方式是什么? 我知道对于常数切片索引,可以执行此操作 batch\u size=2 数据=火炬。零((批量大小,1,256,256)) x_开始=10 x_停止=20 y_开始=10 y_站=20 数据[torch.arange(批量大小),:,y_开始:y_停止,x_开始:x_停止]=1 但问题是,如果启动和停止值不同,我该如何处理这种情况? 例如 batch\u size=2 数据=火炬。零((批量大小,1,256,256)) x_sta

我想知道执行批量切片(torch/numpy)的最佳方式是什么? 我知道对于常数切片索引,可以执行此操作

batch\u size=2
数据=火炬。零((批量大小,1,256,256))
x_开始=10
x_停止=20
y_开始=10
y_站=20
数据[torch.arange(批量大小),:,y_开始:y_停止,x_开始:x_停止]=1
但问题是,如果启动和停止值不同,我该如何处理这种情况? 例如

batch\u size=2
数据=火炬。零((批量大小,1,256,256))
x_start=[10,5]
x_停止=[20,30]
y_start=[10,5]
y_stop=[20,30]
数据[torch.arange(批量大小),:,y_开始:y_停止,x_开始:x_停止]=1

我想我可以在for循环中完成它,但我想知道是否有更类似python的方法来完成它。

在您的第二个示例中,
x\u start
/
x\u stop
y\u start
/
y\u stop
值之间的差异不是常数,您希望切片数组的形状是什么?在任何情况下,我不确定我是否理解您的要求,我以为您希望每个批次项目有不同的开始/结束索引,但是列表的大小应该匹配
batch\u size
。抱歉,我的演示代码中有一个输入错误,batch\u size应该等于x\u start的长度。基本上,我想将批量不同方块中的样本设置为1Ah,我现在明白你的意思了。如果批大小不是很大,我可能会考虑在一个循环中进行。问题是,要“一次性”完成,您必须生成包含所有要修改位置索引的数组(这需要一些时间/空间),然后执行“高级索引”以实际设置值(比简单切片更昂贵)。我说的是NumPy的案子,我对PyTorch没有经验,但我不认为它会有太大的不同。