【发布时间】:2015-05-04 22:58:39
【问题描述】:
当我运行下面的代码时,我得到 (24, 170, 180) (29559,)
作为我的打印语句的答案(打印数组的形状)。 我使用的原始数据集的形状是 (24, 170, 180)。所以当前数据集 dataArr 的尺寸为 170*180。我固定了时间 t=10(这里的维度为 24)我遍历 2d 数组并 bilrp 一个单元格(四个数据点 - i,j i+1,j, i,j+1, i+1,j+1 ) 转换为一个值并附加到 self.tempY 数组。所以我应该为 self.tempY 数组的形状得到的值是 170*180。但结果集有 29904 个值。为什么我会得到这个值?
def compute(self,varval):
vars=self.data.variables
for var in vars:
if var==varval:
ntimes, ny, nx=vars[var].shape #inherit the method above.
print(ntimes, ny, nx)
#create the old computational grid.
computational_grid=np.zeros((ny,nx),dtype=int)
fraction=.5
newnx,newny =(nx*fraction,ny*fraction)
new_computational_grid=np.zeros((newny,newnx),dtype=int)
phy_value_arr=self.get_data(varval)
t=10 #send this t value with coords
dataArr=self.data.variables['tos'][t]
for j in range(1,(nx-2),1):
for i in range(1,(ny-2),1):
a=self.Lerp((dataArr[i][j+1]),(dataArr[i+1][j+1]),fraction)
b=self.Lerp((dataArr[i][j]),(dataArr[i+1][j]),fraction)
self.tempY.append(self.Lerp(a,b,fraction))
smallgridarray = np.asarray(self.tempY)
print(smallgridarray.shape)
def Lerp(self, _a, _b, _t) :
return _a+(_b-_a)*_t
【问题讨论】:
-
你能提供一些输入数据的例子吗?我们如何调用这个方法来自己检查结果?给定输入的预期输出是什么?
-
我有一个在此方法中使用的 netcdf 数据集。它有几个变量,其中 tos 是我关心的变量。 self.get_data(varval) 是一个包含时间经度和纬度的 3d 数组。我从 t=10 的 3d 数组中得到一个切片,并尝试获取该 2d 平面中单元格的平均值。这个平面的形状是 170*180,有那么多点。我正在尝试对这个平面上的每个单元格进行 birp 并生成值数组。这有帮助吗?
-
我打印了 nx 值和 ny 值,它们是 180 和 170。如果我打印 dataArr,我会得到类似的结果。我想知道空白值是否也有任何问题。
-
[[-- -- -- ..., -- -- --] [-- -- -- ..., -- -- --] [-- -- - ...... - - - ] ...,271.42236328125 271.422607421875 271.4228820800781 ...,271.4221496582031 271.4220886230469 271.4221496582031] [271.432373046875 271.43243408203125 271.4325256347656 ...,271.4322204589844 271.4322814941406 271.4323425292969] [271.4455261230469 271.4455261230469 271.4455261230469 ...,271.445556640625 271.445556640625 271.445556640625]]
标签: python arrays numpy netcdf