用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函数!

上一篇下一篇

猜你喜欢

热点阅读