用于改变多个numpy数组的函数的行为变化的平均值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于改变多个numpy数组的函数的行为变化的平均值相关的知识,希望对你有一定的参考价值。

我有三个BGR颜色值(存储到numpy数组中,并且我想计算它们的平均值(每个元素的平均值都是这样:[meanB,meanG,meanR])。]]

这是一个非常简单的任务,我发现这种方式可以做到这一点:

import numpy as np

bgr1 = np.array([6, 149, 254])
bgr2 = np.array([5, 146, 251])
bgr3 = np.array([5, 149, 251])

bgr_mean = ((bgr1 + bgr2 + bgr3) / 3).astype(int)

print(bgr_mean)

将输出按预期方式输出:

[5 148 252]

我的问题是,当我在代码中实现此功能时,尽管每个元素的值和类型都相同,但它根本不会给出相同的结果。此代码:

bgr1 = button_image[0][x]
print("bgr1 = " + str(bgr1))
print(type(bgr1))

bgr2 = button_image[0][x-1]
print("bgr2 = " + str(bgr2))

bgr3 = button_image[1][x+1]
print("bgr3 = " + str(bgr3))

bgr_mean = ((bgr1 + bgr2 + bgr3) / 3).astype(int)
print("bgr_mean = " + str(bgr_mean))

输出:

bgr1 = [6149254]

类'numpy.ndarray'

bgr2 = [5146251]

bgr3 = [5149251]

bgr_mean = [5 62 81]

Button_image是一个numpy数组BGR图像,而x(整数类型)是图像的中间(x轴,duh)。我的测试脚本与其他代码在同一项目中,使用的是Python 3.7.4和相同的numpy版本(1.16.3)

这是我的第一个问题,所以我希望我写的正确,如果您对导致此问题的原因有任何了解,请先谢谢。

我有三个BGR颜色值(存储到numpy数组中,并且我想计算它们的平均值(每个元素的平均值都是这样:[meanB,meanG,meanR])。这是一个漂亮的...

答案

因此,正如第一条评论所述,数组的dtype就是问题。因为我正在从BGR图像数组中获取BGR值,所以它们继承了它的dtype(uint8)。解决的方法是简单地将每个bgr数组转换为np.int32 dtype,然后再计算它们的均值:

以上是关于用于改变多个numpy数组的函数的行为变化的平均值的主要内容,如果未能解决你的问题,请参考以下文章

numpy数据平滑

更改 dtype 时 Numpy 数组形状会发生变化

Numpy | 12 数组操作

如何使用逐元素操作获取多个 numpy 保存的数组的均值和标准

numpy 多维数组的存取

如何找到一个numpy数组的多个均匀分布的方法?