1.reshape函数有哪些作用
在处理nc文件的过程中,通常包含了时间(time),经度(Lon)和纬度(lat),维度一般为三维,所以计算降雨、风、气溶胶等数值过程中需要改变维度,因此numpy.reshape()函数主要是被用于改变数组的形状而不改变它的数据。该函数返回一个数据不变但是维度变化的数组。
2.reshape参数说明
reshape(a,newshape,order)
参数 | 描述 |
---|---|
a | 重组维度,必须要有的 |
newshape | 必须要有的,新的数组形状,必须要和旧的数组形状相兼容,如果是整数,则结果将是该长度的一维的数组。一个形状尺寸可以为-1,在这种情况下该值是根据数组的长度和其余维来推断的。 |
order | 默认为“按行”排序,即行优先,order=‘c’;若要改为“按列”排列,可通过修改order参数进行改变,order=‘f’ |
3.reshape函数使用
import numpy as np
x = np.random.randn(3,4,4)
print(x)
print(x.shape) ## (3,4,4)
x_shape1 = x.reshape((-1,1))
print(x_shape1)
print(x_shape1.shape)
##输出
"""
[[-1.67801616]
[-0.09628119]
[-0.9089497 ]
[ 1.18375552]
[-1.75075092]
[-0.96726959]
[ 0.63560458]
[-1.89102117]
[-0.50195235]
[ 0.66531248]
[-0.62532836]
[ 0.99750862]
[ 0.28186339]
[-1.02028719]
[ 0.17320298]
[ 0.21332318]
[ 1.43376927]
[ 1.03839138]
[-3.05672735]
[-0.77708269]
[ 0.41603471]
[ 0.12485733]
[-0.00760408]
[-0.40286899]
[ 0.91850841]
[-0.75621141]
[ 1.28855272]
[-0.42911801]
[ 3.48153351]
[-0.09291484]
[ 0.99143197]
[ 1.21240764]
[-0.92816431]
[ 1.64733273]
[-0.67986017]
[ 1.5876786 ]
[-0.48230181]
[ 1.66607294]
[ 1.28969276]
[ 0.15612784]
[-0.59492228]
[ 1.11845624]
[-1.06718761]
[ 0.7456491 ]
[-0.33098145]
[-0.61728401]
[ 0.96576885]
[ 0.53507203]]
"""
"""
维度:(48, 1)
"""
x.reshape((-1,1))中的负数是模糊控制,负数可以为任何数,其作用在于计算机根据原数组中的元素总数自动计算行或列的值。比如reshape(-1,4)固定四行,多少列系统根据元素数量自动计算好;同理reshape(2,-2)固定两行,列数自动算好。
x_shape3 = x.reshape(-1)
print(x_shape3)
print(x_shape3.shape)
"""
输出结果:
[-1.67801616 -0.09628119 -0.9089497 1.18375552 -1.75075092 -0.96726959
0.63560458 -1.89102117 -0.50195235 0.66531248 -0.62532836 0.99750862
0.28186339 -1.02028719 0.17320298 0.21332318 1.43376927 1.03839138
-3.05672735 -0.77708269 0.41603471 0.12485733 -0.00760408 -0.40286899
0.91850841 -0.75621141 1.28855272 -0.42911801 3.48153351 -0.09291484
0.99143197 1.21240764 -0.92816431 1.64733273 -0.67986017 1.5876786
-0.48230181 1.66607294 1.28969276 0.15612784 -0.59492228 1.11845624
-1.06718761 0.7456491 -0.33098145 -0.61728401 0.96576885 0.53507203]
"""
"""
维度:(48,)
"""
4.总结
np.reshape(2,3) ##重组成2行3列数组
np.reshape(-1)##第一个维度不限,无其它维度要求,那不就是一维
np.reshape(2,-1)##第一个维度维数是2,第二个不限,两行是肯定的
np.reshape(-1,2)##第二个维度维数是2,第一个不限,就是两个两个到底。