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 图像,这在许多图像处理应用中非常常见。
本文作者:smartljy
本文链接:https://www.cnblogs.com/smartljy/p/18620043
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步