增加维度

高纬度打印出来很不好观察,所以打印出来shape更加容易理解维度的增加,

此外一维向量a=np.array([1,2,3]), a[:,None],相当于变为二维并转置了shape=(3,1)

b

        Out[16]: 

        array([[123],

               [456],

               [789]])

   

b.shape

        Out[17]: (33)

b[None,:,:].shape

        Out[18]: (133)

b[:,None,:].shape

        Out[19]: (313)

b[:,:,None].shape

        Out[20]: (331)

 

 

维度叠加

##np.stack()axis参数的理解

 

假设ABCshape = (3,3)

axis = 0 将(3x3)的矩阵看为整体单位,从上往下堆

axis = 1 ABC中的行作为整体单位,从上往下堆

axis = 2 ABC中的单个数作为整体,从左往右堆

   

= np.  array([[123],

               [456],

               [789]])

= np.  array([[123],

               [456],

               [789]])

= np.  array([[123],

               [456],

               [789]])

 

np.stack([A,B,C], axis=0)

 

np.stack([A,B,C], axis=1)

np.stack([A,B,C], axis=2)

 

 

opencv的cv2.hconcat和 cv2.vconcat

 

import cv2

import numpy as np

   

data1 = np.array([[123],

                  [456],

                  [789]])

   

hdata = cv2.hconcat([data1,data1,data1])#水平方向拼接,三维的很迷惑,改变的是二维度的信息,在第二个维度上进行纵向拼接。

vdata=cv2.vconcat([data1,data1,data1])#垂直方向拼接,np.r_

print(hdata)

print("\n")

print(vdata)

 

 

Numpy中np.c_和np.r_

np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等。

np.c_是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等。

import numpy as np

   

data1 = np.array([ [[12],

                   [34]],

                  [[56],

                   [78]],

                  [[10,11],

                   [12,13]] ])

   

print(data1.shape)  # (3三维, 2二维, 2一维)

data_c = np.c_[data1, data1, data1]

data_r = np.r_[data1, data1, data1]

print(data_c)  主要是在第一个维度上横向拼接

print(data_c.shape)  # (3, 2, 6)

print("\n"*3)

print(data_r)  主要是在三维度上拼接,直接压落落,放在上面,这种是多种图片的集合拼接

print(data_r.shape)  # (9, 2, 2)

 

data_c data_r

 

 

 

 

 

 

 

 

posted on 2022-02-14 22:11  低八度  阅读(317)  评论(0编辑  收藏  举报