将4D阵列中的特定元素相乘

时间:2019-05-07 14:18:45

标签: python pandas

我正在使用python 3,我有一个数组oh_array,其形状为(12, 72, 46, 38),我需要将[20:27],[38:43],[-16:-1] axis=1乘以10 然后将[17:26] axis=2乘以10,然后将[0:8]axis=3乘以10。该数组必须保持相同的大小和尺寸,但是其中的这些元素已更改。我曾经考虑过使用带范围的循环,但是不知道它们是否可以在多个维度上使用。

1 个答案:

答案 0 :(得分:0)

IIUC,使用np.multiply.atnp.r_

np.multiply.at(arr, (slice(None), 
                     np.r_[10:28, 38:43, -16:-1], 
                     slice(None), 
                     slice(None)), 
               10)

其中arr是您的数组。使用ufunc.at函数,您可以将索引(在第二个参数中指定)或数组arr(在第一个参数中指定)中的值乘以某个数字b(在这种情况下) ,10)中的最后一个参数中指定。只需相应地更改索引