I have a 3d numpy array build like this:
a = np.ones((3,3,3))
我希望能够从给定的坐标开始,在所有维度上广播数值,但维度的数量可能不同。
例如,如果我有坐标(1,1,1)
,我可以执行以下三个功能:
a[1,1,:] = 0
a[1,:,1] = 0
a[:,1,1] = 0
并且结果将会是我期望的输出,即:
array([[[1., 1., 1.],
[1., 0., 1.],
[1., 1., 1.]],
[[1., 0., 1.],
[0., 0., 0.],
[1., 0., 1.]],
[[1., 1., 1.],
[1., 0., 1.],
[1., 1., 1.]]])
如果我获得了坐标(0,1,0)
,对应的广播将是:
a[0,1,:] = 0
a[0,:,0] = 0
a[:,1,0] = 0
有没有一种方法可以在一个操作中完成这个过程,而不是分成3部分操作?我问这个问题是因为我正在处理的实际数组具有更多的维度,这使得代码看起来冗长而又冗余。 另外,如果维数发生变化,我将不得不重写代码。
编辑:它不需要一次性完成,我只需要以编程方式在所有维度上进行操作,这样,如果维数发生变化,代码将保持不变。
编辑2:关于这个逻辑,我不确定是否相关,但我正在通过坐标在地图上给出一个点的值,并基于此,我知道地图上整个行、列和高度的值(这就是我用
0
更新所有3个的原因)。 在其他情况下,地图是2维的,我仍然知道行和列的相同信息,但无法找到适用于多维度的函数。