gpt4 book ai didi

python - numpy 将数组元素与另一个数组相乘

转载 作者:太空宇宙 更新时间:2023-11-04 08:56:30 36 4
gpt4 key购买 nike

我正在尝试对多光谱图像进行编码。

每个像素的值都在 33 个 channel 中编码。

我有两个 numpy 数组 imagespectral_range

例如一张图片有 4 x 4 像素:

image = np.array([[[1,2,4,3],[2,2,2,1],[1,2,3,2],[5,4,3,2]])

并且对于每个像素,应该关联图像覆盖的光谱范围的 33 个值:

spectral_range = np.array([0,0,0,0,0,0,0,1,23,99,166,86,54,12,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])

我怎样才能简单地创建一个形状为 (width, height, 33) 的 np.array,其中每个像素的 33 个值是数组 spectrum 的 33 个值相乘通过数组 image 的各个值?

预期结果如下:

result = np.array([[[0,0,0,0,0,0,0,1,23,99,166,86,54,12,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,2,46,198,...etc.]]])

感谢帮助

最佳答案

您只需向image 添加一个额外的轴,然后将该数组与spectral_range 相乘。额外的轴使两个数组可以相互广播:

>>> result = image[:, :, np.newaxis] * spectral_range
>>> result.shape
(4, 4, 33)
>>> result
array([[[ 0, 0, 0, 0, 0, 0, 0, 1, 23, 99, 166, 86, 54,
12, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 2, 46, 198, 332, 172, 108,
24, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0],
...

关于python - numpy 将数组元素与另一个数组相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29708330/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com