np.transpose(),np.tile(),np.newaxis

先来简单总结一下这几个函数np.transpose,np.tile(),np.newaxis

一、np.transpose()

主要参考:0岁的数据分析师的博文知乎回答

1、“.T”主要适用于一维二维数组,略

2、对于多维数组,我们拿三维数组来看一下。

转置格式为np.transpose(array,tuple)或者array.transpose(tuple),其实这个tuple表示的是对array的shape进行哪几个维度的转置,比如一个三维数组的shape为(2,3,4),进行(1,0,2)的transpose之后,就会互换前两个维度,第三个维度不变,然后shape就变成了(3,2,4).

Example:

创建一个2*3*4的三维矩阵

>>> arr1
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],


       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
>>> arr1.shape
(2, 3, 4)

我们进行转置一些看一下shape的变化是不是和前面讨论的一样

>>> arr1.transpose((1,0,2)).shape
(3, 2, 4)

好,现在看到我们的讨论是成立的,那么在转置之后具体进行了什么操作我们再来看一下

>>> arr1.transpose((1,0,2))
array([[[ 0,  1,  2,  3],
        [12, 13, 14, 15]],


       [[ 4,  5,  6,  7],
        [16, 17, 18, 19]],


       [[ 8,  9, 10, 11],
        [20, 21, 22, 23]]])

按照知乎的回答其实可以理解为将数组的0维和1维进行转置,第二维不变,将二维看成一个整体

# 将数组看成如下
arr1 = [
           [a1,a2,a3]
           [a4,a5,a6]
       ]
# 转置之后为
arr1.transpose((1,0,2)) = [
                              [a1,a4]
                              [a2,a5]
                              [a3,a6]
                          ]
# 将a1到a6带入得到:
array([[[ 0,  1,  2,  3],
        [12, 13, 14, 15]],


       [[ 4,  5,  6,  7],
        [16, 17, 18, 19]],


       [[ 8,  9, 10, 11],
        [20, 21, 22, 23]]])

二、np.tile()

函数格式为np.title(a,reps)

Example:

reps传入只有一个参数默认进行横向复制

>>> b = np.array([[1,2],[3,4]])
>>> b
array([[1, 2],
       [3, 4]])
>>> np.tile(b,2)
array([[1, 2, 1, 2],
       [3, 4, 3, 4]])

reps传入列表或者元组表示进行纵横方向分别复制

>>> np.tile(b,[2,3]) # 纵向复制两次,横向复制三次 
       [3, 4, 3, 4, 3, 4],
       [1, 2, 1, 2, 1, 2],
       [3, 4, 3, 4, 3, 4]])

三、np.newaixs

np.newaxis表示插入一个新的维度

1、一维度

>>> a
array([0, 1, 2, 3, 4])
>>> a[:,np.newaxis]
array([[0],
       [1],
       [2],
       [3],
       [4]])

2、多维度

首先回顾一下对多为数组的切片操作

>>> a = np.arange(12).reshape((2,2,3))
>>> a
array([[[ 0,  1,  2],
        [ 3,  4,  5]],


       [[ 6,  7,  8],
        [ 9, 10, 11]]])
>>> a[0,:,:] 
array([[0, 1, 2],
       [3, 4, 5]])
>>> a[1,:,:]
array([[ 6,  7,  8],
       [ 9, 10, 11]])
>>> a[:,0,:]
array([[0, 1, 2],
       [6, 7, 8]])
>>> a[:,1,:]
array([[ 3,  4,  5],
       [ 9, 10, 11]])
>>> a[:,:,0]
array([[0, 3],
       [6, 9]])
>>> a[:,:,1]
array([[ 1,  4],
       [ 7, 10]])
>>> a[:,:,2]
array([[ 2,  5],
       [ 8, 11]])

好了,到这就都散了吧

多维数组的增加新维度我还没遇到过... .. .

The end.


猜你喜欢

转载自blog.csdn.net/li_haiyu/article/details/80505232