Numpy和Opencv中的reshape 和 transpose的区别
在Numpy和Opencv中,都有两个函数:reshape 和 transpose。
该两个函数都具有改变维度的作用,在使用中一定要注意二者的区别,不然会导致意想不到的错误。就比如说,opencv读取数据的方式是WHC的,但是如果想要把图片放到caffe框架中进行训练的话,那么是需要改变其构造方式为CWH。如果这个时候使用reshape去改变其维度顺序,最后就会出错。
举个栗子:
a = np.random.random((4,4,3))
b = a.reshape((3,4,4))
c = a.transpose((2,0,1))
print(a)
print('--'*30)
print(b)
print('--'*30)
print(c)
a:
b:
c:
根据结果就可以很明显的发现,二者最终生成的结果还是差别比较大的~