python 如何实现数组的间隔排列:每一行比前一行间隔一个位置排列。

python 如何实现数组的间隔排列:每一行比前一行间隔一个位置排列。

最近,在处理一些数据时,由于数据是按照每小时进行采样的,为了保持周期的完整性,需要将同一时刻对应的数据进行平均处理。
举个例子:
第一行是1-12小时;
第二行从第一行第2个小时对应的列数开始排1-12小时;
第三行从第一行第3个小时对应的列数开始排1-12小时;
、、、
依次同理。

在python中如何实现呢?

1、每一行的数据存储在不同的nc文件内==》循环读取nc文件,
2、创建一个都是nan值的矩阵,方面后续将数据存入,
3、写一个循环,使得每次数据依次间隔一个位置存在每一行中。

循环读取文件很简单,如果命名有一定规律的话,可以参考我前面的文章
1、字符串拼接
2、批量读取文件
;主要使用
字符串拼接和glob函数

import numpy as np
import netCDF4 as nc
import xarray as xr
import glob

#  循环读取nc文件
path='D:\\data\\'
file='*.nc'
filelist=glob.glob(path=file)
for f in filelist:
	data=xr.open_dataset(f)
	
#  构建空矩阵,循环插入
a=np.random.rand(30)
a=a.reshape(5,6)
b= np.empty((5, 30,)) * np.nan
ind=a[0,:]

#  循环填入矩阵
for i in range(len(a)):
    ind=a[i,:]
    b[i,i:i+len(ind)]=ind #设置插入的间隔,这里间隔是1
	

初步的实现结果如下,这里我只是给了一个普通的例子。有兴趣的小伙伴可以将a换成你的nc数据b根据对应的数据a设置相应的矩阵大小

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

简朴-ocean

继续进步

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

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

打赏作者

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

抵扣说明:

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

余额充值