首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以Numpy图像数组为中心

以Numpy图像数组为中心
EN

Stack Overflow用户
提问于 2016-04-04 03:56:40
回答 1查看 4.8K关注 0票数 1

我有一些数字图像数组,我想要对其进行中心化(减去平均值,除以标准差)。我可以这样做吗?

代码语言:javascript
运行
复制
# x is a np array
img_mean = x.mean(axis=0)
img_std = np.std(x)
x = (x - img_mean) / img_std
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-04 05:35:25

我不认为这是你想要做的。

假设我们有这样一个数组:

代码语言:javascript
运行
复制
In [2]: x = np.arange(25).reshape((5, 5))

In [3]: x
Out[3]: 
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])

x.mean(axis=0)计算每列的平均值(轴0):

代码语言:javascript
运行
复制
In [4]: x.mean(axis=0)
Out[4]: array([ 10.,  11.,  12.,  13.,  14.])

从原始x数组中减去每个值后,每个值将被其列的平均值减去:

代码语言:javascript
运行
复制
In [5]: x - x.mean(axis=0)
Out[5]: 
array([[-10., -10., -10., -10., -10.],
       [ -5.,  -5.,  -5.,  -5.,  -5.],
       [  0.,   0.,   0.,   0.,   0.],
       [  5.,   5.,   5.,   5.,   5.],
       [ 10.,  10.,  10.,  10.,  10.]])

如果我们不为x.mean指定一个轴,则整个数组将被接受:

代码语言:javascript
运行
复制
In [6]: x.mean(axis=None)
Out[6]: 12.0

这就是您一直以来对x.std()所做的工作,因为对于np.stdnp.mean,默认轴都是None

这可能是你想要的:

代码语言:javascript
运行
复制
In [7]: x - x.mean()
Out[7]: 
array([[-12., -11., -10.,  -9.,  -8.],
       [ -7.,  -6.,  -5.,  -4.,  -3.],
       [ -2.,  -1.,   0.,   1.,   2.],
       [  3.,   4.,   5.,   6.,   7.],
       [  8.,   9.,  10.,  11.,  12.]])

In [8]: (x - x.mean()) / x.std()
Out[8]: 
array([[-1.6641005, -1.5254255, -1.3867504, -1.2480754, -1.1094003],
       [-0.9707253, -0.8320502, -0.6933752, -0.5547002, -0.4160251],
       [-0.2773501, -0.1386750,  0.       ,  0.1386750,  0.2773501],
       [ 0.4160251,  0.5547002,  0.6933752,  0.8320502,  0.9707253],
       [ 1.1094003,  1.2480754,  1.3867504,  1.5254255,  1.6641005]])
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36394340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档