如何替换多维数组中的列表?

How to replace a list inside a multildimensional array?

我在 SO 上解决 ,但我尝试的方法遇到了一些问题。

OP 有一个如下所示的列表,

a = [[[100, 90, 80, 255], 
      [80, 10, 10, 255]], 
     [[0, 0, 0, 255],
      [0, 0, 0, 255]]]

他们想用 [0,0,0,0] 替换 [0,0,0,255]。


为此,我首先尝试使用 np.where(a == [0,0,0,255]) 获取此列表出现的所有索引,但输出是一个空数组。

接下来,我尝试将数组转换为 pandas 数据帧并应用 replace 函数,但数据帧仍然保持不变。

np.where 给我一个空数组并且 replace 没有更改数据框的原因是什么,我该如何解决这个问题?

您必须将 a 转换为 numpy 数组并使用:

a = np.array(a)
a[(a == [0, 0, 0, 255]).all(axis=2)] = [0, 0, 0, 0]

输出:

>>> a
array([[[100,  90,  80, 255],
        [ 80,  10,  10, 255]],

       [[  0,   0,   0,   0],
        [  0,   0,   0,   0]]])

>>> a.tolist()
[[[100, 90, 80, 255], [80, 10, 10, 255]], [[0, 0, 0, 0], [0, 0, 0, 0]]]