用reshape函数对高维数组降纬
2019-10-28 本文已影响0人
胜负55开
需求:有时进行矢量化编程时,多个大型数组相乘后经常会出现"单位二维数组"变成了"列数组或行数组",即单位二维数组变成了:(1,n)或(n,1)的尺寸。此时这个1尺寸其实并没有用,我们可以用reshape直接把这一维度降掉,即将高维数组降掉一维。
例子:
import numpy as np
# 把单位二维数组中的1降掉!
a1 = np.zeros( (2,2,1,3) ) + 1
a2 = np.zeros( (2,2,3,1) ) + 1
b1 = a1.reshape(2,2,3)
b2 = a2.reshape(2,2,3)
print( b1 == b2 )
# 结果:即使a1和a2尺寸不同,降维为得到的b1和b2是完全相同的!
[[[ True True True]
[ True True True]]
[[ True True True]
[ True True True]]]
numpy与cupy都有这个reshape函数,这个函数的功能非常强大!用了才发现它可以几乎非常自由的按需调整我的高维数组尺寸,以方便我进行必要的高维数组的矩阵相乘。因此:"矢量化编程"中会"经常用到"这个np.reshape或cp.reshape函数!