我想做一个移动窗口,当它在数据中移动时,它会在每个框中绘制值的范围。我一直在做这样的运行窗口:
import numpy as np
from astropy.convolution import convolve
x = np.random.randint(10,size=(10,10))
y = convolve(x,np.ones((5,5)),boundary='extend',preserve_nan=True)
print('x:',x)
print('y:',y)
x: [[0 2 7 7 3 8 0 5 5 7]
[6 8 0 6 2 0 0 0 9 7]
[7 4 4 1 5 1 1 6 1 8]
[8 9 5 2 3 5 4 2 6 5]
[0 7 2 4 3 6 6 6 7 5]
[0 0 8 3 2 8 1 0 7 9]
[5 2 0 6 3 3 0 0 6 0]
[1 0 2 9 7 9 7 6 5 6]
[5 6 5 5 5 3 8 0 6 4]
[5 9 9 5 2 8 1 3 0 6]]
y: [[6.12 6.08 6.2 5.64 5.68 4.72 3.88 3.04 2.88 2.24]
[5.68 5.68 5.76 5.28 5.6 4.76 4. 3.4 3.36 2.8 ]
[5.44 5.24 5.32 4.96 5.16 4.76 4.08 3.44 3.24 2.88]
[5.32 4.96 4.92 4.4 4.6 4.2 3.64 3.08 3. 2.68]
[4.96 4.8 4.92 4.68 4.72 4.4 3.8 3.4 3.36 3.44]
[4.52 4.44 4.52 4.4 4.48 4.24 3.76 3.4 3.24 3.24]
[4.12 4.2 4.36 4.12 3.76 3.8 3.44 3.2 3.36 3.68]
[3.32 3.84 4.24 3.92 3.8 3.76 3.44 3.48 4.24 4.72]
[2.4 3.32 4.08 3.96 3.96 4.28 3.96 4.16 5.24 6.04]
[2.08 3.16 4.32 4.16 4.36 4.6 4.4 4.44 5.8 6.64]]
这会计算每个5x5窗口的平均值,但是有没有办法显示x
中的值的范围?比如说一个窗口来自x
的左上角:
0 2 7 7 3
6 8 0 6 2
7 4 4 1 5
8 9 5 2 3
0 7 2 4 3
范围是从0到9,所以在matplotlib图中,将绘制9,并且这将在数据中移动的每个窗口中重复。因此最终的图看起来像:
1条答案
按热度按时间0ejtzxu11#
使用mplcursors,可以交互式地标记一个区域,并通过注解显示值。
要创建
x
与y
的线性图,您可以使用np.ravel()
将它们转换为1D: