Python之数据分析(numpy裁剪、压缩、累乘,样本相关性曲线的绘制)

一、裁剪、压缩、累乘

1、裁剪

  • 概念:指的是削掉波峰或波谷这类型的,将调用数组中小于min的元素设置为min,大于max的元素设置为max
  • 用法:ndarray.clip(min=最小值, max=最大值)

2、压缩

  • 概念:返回调用数组中满足给定条件的元素
  • 用法:ndarray.compress(条件)

3、累乘

  • 结果累乘:返回调用数组中各元素的乘积,是累乘结果
    ndarray.prod()
  • 过程累乘:返回调用数组中个元素计算累乘的过程数组,是累乘过程
    ndarray.cumprod()

4、练习代码

import numpy as np
a = np.arange(1, 10).reshape(3, 3)
print(a)

# 裁剪
b = a.clip(min=3, max=7)
print('-------------\n', b)

# 压缩
c = a.compress(a.ravel() > 3).reshape(-1, 3)
# 压缩只能处理一维数组,因此需要ravel扁平化一下,在reshape变为任意行3列的二维数组
print('-------------\n', c)
# 因为条件两边都是布尔型数组,不是单单的布尔值,不能用and
# 当有多个条件时,需要用 & 符号做与运算,并且在两边加上小括号()
d = a.compress((3 < a.ravel()) & (a.ravel() < 7))
print('-------------\n', d)

# 累乘结果
e = a.prod()
print
为了分析TIFF格式的气温数据与数字高程模型(DEM)之间的空间相关性,可以使用GIS技术进行以下步骤: ### 数据准备与预处理 1. **数据格式一致性**:确保气温数据和DEM数据都为TIFF格式,并且具有相同的投影坐标系和分辨率。若不一致,可使用GIS工具(如QGIS或ArcGIS)中的重采样(Resampling)和投影变换(Project Raster)工具进行调整。 2. **裁剪与对齐**:如果气温数据和DEM的覆盖范围不同,可以使用裁剪工具(Clip Raster)将两者裁剪为相同的地理范围,以确保后续分析的空间对齐[^1]。 ### 空间相关性分析 1. **栅格叠加分析**:在GIS中使用“栅格计算器”(Raster Calculator)功能,将气温数据与高程数据进行叠加。例如,可以计算每个像元的气温与高程值的对应关系,生成新的栅格数据。 2. **提取样本点**:从气温数据和DEM中随机生成一组采样点,并提取每个采样点的气温值和对应的高程值。这些样本点将用于后续统计分析。 3. **相关性统计**:利用统计软件(如R、Python的SciPy库或Excel)计算气温与高程之间的皮尔逊相关系数(Pearson Correlation Coefficient)或斯皮尔曼等级相关系数(Spearman Rank Correlation Coefficient),以量化两者之间的相关性强度与显著性。 ### 可视化与结果解读 1. **散点图绘制**:通过散点图展示气温值与高程值之间的关系,并添加趋势线以直观反映相关性方向(正相关或负相关)。 2. **空间分布图**:使用GIS工具将气温与高程的相关性结果以地图形式展示,例如通过颜色梯度表示不同区域的相关性强度。 ### Python示例代码 以下是一个使用Python进行相关性分析的示例代码: ```python import numpy as np import rasterio from scipy.stats import pearsonr # 读取气温数据和DEM数据 with rasterio.open('temperature.tif') as src_temp: temperature = src_temp.read(1) profile = src_temp.profile with rasterio.open('dem.tif') as src_dem: dem = src_dem.read(1) # 展平数据并去除无效值 valid_mask = (~np.isnan(temperature)) & (~np.isnan(dem)) temp_flat = temperature[valid_mask] dem_flat = dem[valid_mask] # 计算皮尔逊相关系数 correlation, p_value = pearsonr(temp_flat, dem_flat) print(f"皮尔逊相关系数: {correlation:.2f}, p值: {p_value:.4f}") ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸿蒙Next

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值