np维度变换_python中np.reshape,np.transpose和axis

1.np.reshape,np.transpose和axis

在阅读YOLO V1代码过程中,出现了一段代码:

self.offset = np.transpose(np.reshape(np.array( #reshape之后再转置,变成7*7*2的三维数组
 [np.arange(self.cell_size)] * self.cell_size * self.boxes_per_cell),
 (self.boxes_per_cell, self.cell_size, self.cell_size)), (1, 2, 0))

其中的self.cell_size=7, self.boxes_per_cell=2,那么翻译一下,就是:

np.transpose(np.reshape(np.array([np.arange(7)]* 7 * 2),(2, 7, 7)), (1, 2, 0))

我们来逐一解读:

先从:np.array([np.arange(7)] * 7 * 2开始,这个简单,就是array([0, 1, 2, 3, 4, 5, 6])*14

就是:

[array([0, 1, 2, 3, 4, 5, 6]), array([0, 1, 2, 3, 4, 5, 6]), array([0, 1, 2, 3, 4, 5, 6]),
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我们需要安装一些必要的库,比如netCDF4、numpy、matplotlib和scipy等。可以使用以下命令进行安装: ``` pip install netCDF4 numpy matplotlib scipy ``` 接下来,我们可以使用netCDF4库读取sst.mnmean.nc文件的数据: ```python import netCDF4 as nc # 读取数据 file = nc.Dataset('sst.mnmean.nc') sst = file.variables['sst'][:] # 海表温度数据 lat = file.variables['lat'][:] # 纬度 lon = file.variables['lon'][:] # 经度 time = file.variables['time'][:] # 时间 ``` 因为本例我们只需要分析东太平洋海温,所以我们可以选取相应的数据区域: ```python import numpy as np # 选取东太平洋海域 sst = sst[:, (lon >= 120) & (lon <= 280), (lat >= -20) & (lat <= 20)] # 将经纬度维度调整为最后两个维度 sst = np.transpose(sst, [0, 2, 1]) ``` 接下来,我们可以对数据进行EOF分解: ```python from scipy import linalg # 将数据展成二维数组 n_time, n_lat, n_lon = sst.shape sst_2d = sst.reshape(n_time, n_lat * n_lon) # 计算协方差矩阵 cov_mat = np.cov(sst_2d.T) # 计算特征值和特征向量 eig_val, eig_vec = linalg.eig(cov_mat) # 对特征向量进行正交化 eig_vec = eig_vec.real eig_vec = eig_vec / np.sqrt(np.sum(eig_vec ** 2, axis=0)) # 计算EOF eof = np.dot(sst_2d.T, eig_vec) # 将EOF重构成三维数组 eof = eof.reshape(n_lat, n_lon, -1).transpose(2, 0, 1) ``` 现在我们可以画出第一模态: ```python import matplotlib.pyplot as plt # 画出第一模态 plt.imshow(eof[0], cmap='coolwarm') plt.colorbar() plt.show() ``` 接下来,我们可以计算第一模态时间系数: ```python # 计算第一模态时间系数 pcs = np.dot(sst_2d, eig_vec[:, 0]) # 画出第一模态时间系数 plt.plot(time, pcs) plt.xlabel('Year') plt.ylabel('Time series of PC1') plt.show() ``` 最后,我们可以计算第一模态系数与我国气温的协方差和相关系数: ```python # 读取我国气温数据 temp = np.loadtxt('temp.txt') # 计算第一模态系数与我国气温的协方差和相关系数 cov = np.cov(temp, pcs) corr = np.corrcoef(temp, pcs)[0, 1] print('Covariance between PC1 and temperature:', cov[0, 1]) print('Correlation between PC1 and temperature:', corr) ``` 完整代码如下:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值