You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

三维numpy数组的逐像素位移CDF计算与绘制方法咨询

NumPy多维数组计算位移值CDF实现方案

前置依赖

  • numpy用于数组计算
  • matplotlib用于绘图

步骤1:截取目标区域数组

你需要的区域是行136162、列017的像素,直接用切片截取三个数组的对应部分即可:

import numpy as np
import matplotlib.pyplot as plt

# 定义目标区域切片,range左闭右开,和你给出的筛选范围完全一致
row_range = slice(136, 163)
col_range = slice(0, 18)

# 截取后displacement和weights维度为(27, 18, 15),mean_displacement维度为(27, 18)
disp_crop = displacement_distribution[row_range, col_range]
weight_crop = weights[row_range, col_range]
mean_disp_crop = mean_displacement[row_range, col_range]

步骤2:过滤不符合条件的数值

按要求剔除位移小于0.1的数值,这里分两种场景,可根据你的实际需求选择:

场景A:剔除平均位移<0.1的整个像素

# 生成合法像素掩码,维度(27, 18)
valid_pixel_mask = mean_disp_crop >= 0.1
# 提取所有合法像素的位移和权重,维度变为(合法像素数, 15)
valid_disp = disp_crop[valid_pixel_mask]
valid_weight = weight_crop[valid_pixel_mask]
# 打平为一维数组用于整体CDF计算
all_valid_disp = valid_disp.flatten()
all_valid_weight = valid_weight.flatten()

场景B:仅剔除单个<0.1的位移值,保留同一像素的其他合法位移

# 生成合法位移掩码,维度(27, 18, 15)
valid_disp_mask = disp_crop >= 0.1
# 直接提取所有合法的位移和对应权重
all_valid_disp = disp_crop[valid_disp_mask]
all_valid_weight = weight_crop[valid_disp_mask]

步骤3:计算CDF数值

# 按位移值从小到大排序
sort_index = np.argsort(all_valid_disp)
sorted_disp = all_valid_disp[sort_index]
sorted_weight = all_valid_weight[sort_index]

# 计算累积权重,归一化后即为CDF值
cumulative_weight = np.cumsum(sorted_weight)
cdf_value = cumulative_weight / cumulative_weight[-1] # 权重未归一化时保留此步,已归一化可删除

步骤4:绘制CDF图

plt.figure(figsize=(8, 6))
plt.plot(sorted_disp, cdf_value, linewidth=2)
plt.xlabel('位移值', fontsize=12)
plt.ylabel('累积概率 (CDF)', fontsize=12)
plt.title('位移值累积分布函数', fontsize=14)
plt.grid(alpha=0.3)
plt.show()

你期望的效果图如下:
CDF效果图

补充说明

  • 如果需要绘制每个像素单独的CDF,遍历valid_disp和valid_weight按步骤3的逻辑分别计算即可,可添加透明度参数alpha避免线条重叠看不清
  • 若你的weights数组已经按像素做了归一化(每个像素的15个权重总和为1),计算CDF时可以跳过除以cumulative_weight[-1]的步骤

内容的提问来源于stack exchange,提问作者zero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:36:03