我有以下代码和绘图:
import numpy as np
from scipy.interpolate import griddata
import matplotlib.pyplot as plt
def func(x, y):
return x*(1-x)*np.cos(4*np.pi*x) * np.sin(4*np.pi*y**2)**2
grid_x, grid_y = np.mgrid[0:1:200j, 0:1:200j]
rng = np.random.default_rng()
points = rng.random((1000, 2))
values = func(points[:,0], points[:,1])
grid_z = griddata(points, values, (grid_x, grid_y), method='linear')
plt.xlabel("Degrees")
plt.ylabel("Degrees")
plt.imshow(grid_z, extent=(-0.5,0.5,-0.5,0.5), origin='lower')
我想提取圆心半径为0.25°的圆形区域内所有点的平均值,在上述图中居中。并提取内径为0.1º、外径为0.2º的环形内所有值的平均值。
谢谢你的帮助
1条答案
按热度按时间hjzp0vay1#
你需要做的第一件事就是给你的圆加上一个布尔掩码。然后你可以把它应用到
grid_z
隔离圆内的所有值并计算其平均值。更好的方法是直接在屏幕上使用遮罩
grid_x
及grid_y
仅在所需点上插值函数。