如何根据指定位置划分二维矩阵

问题描述 投票:0回答:1

我有一个特征图需要用另一个2d常量划分,特征图的形状为

[H, W, ...]
,2d常量的形状为
[H, W]
,但是当我使用
np.divide
时,它说这两个张量无法广播到一个共同的形状:

import numpy as np

a = np.random.rand(4, 3 ,3)
b = np.random.rand(4, 3)

c = np.divide(a, b, where=b > 0)

正如 numpy 广播规则所说

b
将被广播为形状
[1, 4, 3]
而不是
[4, 3, 1]
,因此我无法使用 boradcast 执行此操作。

我想用常量不为 0 的常量张量划分我的特征图以避免零划分错误,我应该做什么?

python numpy
1个回答
0
投票

问题不在于

where
争论。问题是,您有未定义的操作。
np.divide
按元素执行除法运算。如文档中所述:

除数数组。如果

x1.shape != x2.shape
,它们必须可广播为通用形状(成为输出的形状)。

所以问题是:你到底想做什么?你的问题定义不明确。将矩阵视为每个条目都有交集的网格。 2d 数组就像一个平面,而 3d 数组就像一个立方体。您可以从数组中切出 2d 平面并将它们重新附加在一起,否则您可能只是遇到定义不明确的问题。

© www.soinside.com 2019 - 2024. All rights reserved.