在 Python 中添加 RGB 数组的元素



>假设我有一个 2D RGB 数组,显示为:

[[[ 0.    0.   0.5]
  [ 0.5   0.   0.5]
  [ 0.    0.   0.5]
  ..., 
  [ 0.5   0.   0.5]
  [ 0.    0.   0.5]
  [ 0.    0.   0.5]]]

我想将RB列中的各个元素添加到数组的G部分,使其看起来像:

[[[ 0.    0.5   0.5]
  [ 0.5   1.0   0.5]
  [ 0.    0.5   0.5]
  ..., 
  [ 0.5   1.0   0.5]
  [ 0.    0.5   0.5]
  [ 0.    0.5   0.5]]]

解决此问题的最简单方法是什么?

我会在numpy.array中转换您的列表列表,然后将其切片。

import numpy as np
a=np.array([[ 0. ,  0. ,  0.5],
            [ 0.5,  0. ,  0.5],
            [ 0. ,  0. ,  0.5]])
a[:,1] += a[:,0] + a[:,2]
print(a)

输出:

array([[ 0. ,  0.5,  0.5],
       [ 0.5,  1. ,  0.5],
       [ 0. ,  0.5,  0.5]])

你可以使用

arr[...,1] = arr[...,0] + arr[...,2]

或者也许更易读,

R, G, B = arr[...,0], arr[...,1], arr[...,2]
G[:] = R + B

因为Garr的基本切片,所以它是一个视图。修改视图会修改原始数组。 这分配G[:] = ...修改G就地。所以作业修改了arr.


import numpy as np
arr = np.array([[[ 0.,    0.,   0.5],
                 [ 0.5,   0.,   0.5],
                 [ 0.,    0.,   0.5],
                 [ 0.5,   0.,   0.5],
                 [ 0.,    0.,   0.5],
                 [ 0.,    0.,   0.5]]])
R, G, B = arr[...,0], arr[...,1], arr[...,2]
G[:] = R + B
print(arr)

收益 率

[[[ 0.   0.5  0.5]
  [ 0.5  1.   0.5]
  [ 0.   0.5  0.5]
  [ 0.5  1.   0.5]
  [ 0.   0.5  0.5]
  [ 0.   0.5  0.5]]]

最新更新