numpy的indexing学习笔记
numpy的indexing学习笔记
np.newaxis
效果等价于None,放在哪儿哪儿就增加一个单位长度的维度
高级索引
高级索引如果用了一个ndarray的tuple,即同时使用多array进行索引,那么这些ndarray必须保证他们可以被广播到同样的shape,否则就会抛出异常。
而如果有多个索引,那么它们一次索引第1、2、3……维
每一个索引向量内部,相应位置上的值,表示要取被索引对象相应下标上的值,例子如下:
这个例子展示了如何使用 高级索引(Advanced Indexing)来根据查找表(lookup table)将图像中的每个像素映射到相应的 RGB 颜色值。
让我们以简单的代码示例来演示这个过程:
场景:根据查找表映射像素值到 RGB
假设我们有一个包含图像像素值的数组,像素值是 0 到 7 之间的整数,每个像素需要映射到一个 RGB 颜色。我们有一个 RGB 查找表,其中每一行对应一个颜色的 RGB 三元组。
示例代码:
import numpy as np
# 创建一个简单的 8 色查找表,每行是一个 RGB 颜色三元组
lookup_table = np.array([
    [255, 0, 0],    # Red
    [0, 255, 0],    # Green
    [0, 0, 255],    # Blue
    [255, 255, 0],  # Yellow
    [0, 255, 255],  # Cyan
    [255, 0, 255],  # Magenta
    [192, 192, 192],# Silver
    [0, 0, 0]       # Black
])
# 创建一个示例图像,像素值为 0 到 7 之间的整数,形状为 (3, 3)
image = np.array([
    [0, 1, 2],
    [3, 4, 5],
    [6, 7, 0]
], dtype=np.uint8)
# 使用高级索引根据像素值从查找表中获取 RGB 颜色
rgb_image = lookup_table[image]
# 打印结果
print("Image:\n", image)
print("\nRGB Image:\n", rgb_image)
解释:
- 
lookup_table:是一个形状为(8, 3)的二维数组,其中每一行是一个 RGB 颜色值,代表从0到7的 8 种颜色。
- 
image:是一个形状为(3, 3)的二维数组,包含了图像的像素值,像素值的范围是0到7(即这些值在查找表的范围内)。
- 
高级索引: lookup_table[image]采用了图像的像素值作为索引,从查找表中获取相应的 RGB 值。结果是一个形状为(3, 3, 3)的数组,每个像素都有一个 RGB 三元组。
执行结果:
Image:
 [[0 1 2]
 [3 4 5]
 [6 7 0]]
RGB Image:
 [[[255   0   0]
  [  0 255   0]
  [  0   0 255]]
 [[255 255   0]
  [  0 255 255]
  [255   0 255]]
 [[192 192 192]
  [  0   0   0]
  [255   0   0]]]
结果解释:
- 图像的每个像素值都被映射到查找表中的 RGB 值。
- 对于 image中的0,查找表中的对应行是[255, 0, 0](红色)。
- 对于 image中的1,查找表中的对应行是[0, 255, 0](绿色)。
- 依此类推,直到所有像素都被映射到相应的 RGB 颜色。
通过这种方式,可以将图像的像素值(比如灰度图像或标签图像)转换为对应的 RGB 图像,这在许多图像处理应用中非常常见。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号