我有一个张量,模型,形状为(5,100,200)。就像一个具有5个通道的(100x200)图像。我正在尝试在不使用for循环的情况下实现以下两件事:
我有另一个形状为(100,200)的图像 I 。我想将 model 的每个像素的通道上最小的像素值替换为 I 的像素。例如:
For pixel (3,5)
model(0,3,5)=128
model(1,3,5)=64
model(2,3,5)=256
model(3,3,5)=0
model(4,3,5)=32
和
I(3,5)=69
最小值位于第三个通道中,所以我想将 model(3,3,5)(即0)替换为 I(3,5)(即69)。我用
minargs=np.argmin(model,axis=0)
获得形状(100,200)的矩阵,该矩阵具有对于每个像素具有最小值的通道的通道索引{0,1,2,3,4}。我只是不知道如何使用此矩阵来实现替换(没有for循环)。
我还有一个大小为(5,100,200)的模型矩阵 kmodel ,我想通过/通过模型通道对像素值进行排序,但要使用kmodel中的值作为键。假设
kmodel(0,3,4)=5
kmodel(1,3,4)=1
kmodel(2,3,4)=3
kmodel(3,3,4)=2
kmodel(4,3,4)=6
和
model(0,3,4)=9
model(1,3,4)=8
model(2,3,4)=7
model(3,3,4)=6
model(4,3,4)=5
所以排序后,我应该将模型设为:
model(0,3,4)=8 (8 was the value at model(**1**,3,4)and kmodel has the minimum value ,*1* at channel **1**)
model(1,3,4)=6
model(2,3,4)=7
model(3,3,4)=9
model(4,3,4)=5
我用
numpy.argsort(kmodel,axis=0)
在张量(5,100,200)中获取参数,但是我也不知道如何使用它们来实现排序(没有循环)。 实现以上目标的最快方法是什么?我也经常使用这些张量(5,100,200)的操作,如加法和exp。还希望提供指向包含有关如何指定numpy数组索引的各种方法的良好教程的资源的链接。