gpt4 book ai didi

python - 从 2D 直方图引用数据

转载 作者:太空宇宙 更新时间:2023-11-03 18:11:58 26 4
gpt4 key购买 nike

我有以下代码,可以从 CSV 文件读取数据并创建 2D 直方图:

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt

#Read in CSV data
filename = 'Complete_Storms_All_US_Only.csv'
df = pd.read_csv(filename)

min_85 = df.min85
min_37 = df.min37
verification = df.one_min_15

#Numbers
x = min_85
y = min_37
H = verification

#Estimate the 2D histogram
nbins = 33
H, xedges, yedges = np.histogram2d(x,y,bins=nbins)

#Rotate and flip H
H = np.rot90(H)
H = np.flipud(H)

#Mask zeros
Hmasked = np.ma.masked_where(H==0,H)

#Calculate Averages
avgarr = np.zeros((nbins, nbins))
xbins = np.digitize(x, xedges[1:-1])
ybins = np.digitize(y, yedges[1:-1])
for xb, yb, v in zip(xbins, ybins, verification):
avgarr[yb, xb] += v
divisor = H.copy()
divisor[divisor==0.0] = np.nan
avgarr /= divisor
binavg = np.around((avgarr * 100), decimals=1)
binper = np.ma.array(binavg, mask=np.isnan(binavg))

#Plot 2D histogram using pcolor
fig1 = plt.figure()
plt.pcolormesh(xedges,yedges,binper)
plt.title('1 minute at +/- 0.15 degrees')
plt.xlabel('min 85 GHz PCT (K)')
plt.ylabel('min 37 GHz PCT (K)')
cbar = plt.colorbar()
cbar.ax.set_ylabel('Probability of CG Lightning (%)')

plt.show()

直方图中的每个像素都包含 x 轴和 y 轴上两个不同频率(x 轴上的 min_85min_37)在给定温度范围内发生闪电的概率> 在 y 轴上)。我试图从直方图中引用闪电的概率,该直方图基于各种温度,对于任何给定的 Storm ,这些温度都因个体而异。每个 Storm 都有一个 min_85min_37,对应于 2D 直方图的概率。我知道有一种强力方法,您可以创建大量的 if 语句,每个像素一个,但在尝试合并多个 2D 直方图时,这是乏味且低效的。是否有更有效的方法来根据给定的 min_85min_37 从直方图中引用概率?我有一个单独的文件,其中包含大量 Storm 的 min_85min_37 数据,我只需要将直方图中相应的闪电概率分配给每个 Storm 。

最佳答案

听起来您需要做的就是将 min_85min_37 值转换为索引。像这样的事情会起作用:

# min85data and min37data from your file
dx = xedges[1] - xedges[0]
dy = yedges[1] - yedges[0]
min85inds = np.floor((min85data - yedges[1]) / dx).astype(np.int)
min37inds = np.floor((min37data - yedges[0]) / dy).astype(np.int)

# Pretend you didn't do all that flipping of H, or make a copy of it first
hvals = h_orig[min85inds, min37ends]

但在提取结果索引之前,请确保它们有效。

关于python - 从 2D 直方图引用数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25767903/

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