扩充矩阵维度:newaxis和expand_dims的用法

一、newaxis使用详解

     np.newaxis的作用是在数组中增加一个维度,可以把一维数组二维化,并且可以选择在哪添加一个维度,下面用一个例子来理解

import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a.shape)
#结果为(5,)
a1 = a[:, np.newaxis]
#在维度后面添加一个维度
print(a1.shape)
# 结果为(5,1),此时a1数组变为
#                             [[1]
#                              [2]
#                              [3]
#                              [4]
#                              [5]]
#即从一个一行的一维数组,变成一个五行一列的二维数组

同理,你也可以在维度前面添加一个维度

import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a.shape)
#结果为(5,)
a1 = a[np.newaxis, :]
#在维度前面添加一个维度
print(a1.shape)
# 结果为(1,5),此时a1数组变为 [[1]
#                              [2]
#                              [3]
#                              [4]
#                              [5]]

#即从一个一行的一维数组,变成一个一行五列的二维数组

二、expand_dims使用详解

import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a.shape)
#结果为(5,)
a = np.expand_dims(x, axis=1)
print(x2.shape)
# 结果为(5,1),此时a1数组变为[[1 2 3 4 5]]

#即从一个一行的一维数组,变成一个一行五列的二维数组

对上面的a矩阵而言,axis=0对应的shape为5,axis=1对应的shape为0,这里参数为axis=1即把对应的shape修改为1,同样的,也可以扩充2,3维矩阵

import numpy as np
a1 = np.array([1, 2, 3],[ 4, 5, 6])
print(a.shape)
#结果为(2,3)
a = np.expand_dims(x, axis=2)
print(x2.shape)
# 结果为(2,1,3),此时a1数组变为[[[1 2 3]]
#                              [[4 5 6]]]

对于上面a1矩阵而言,axis=0的shape为2,axis=1的shape为3,若在axis=1的位置添加变量,则需把axis=1的shape修改为1,同时原来的shape=3后移,矩阵的shape变为(2,1,3)。

三、实例应用

在深度学习地震层位运用中,常常需要新建两个数组来存放线号和道号,再把线号道号和预测结果进行拼接

inlines=[] #创建存放线号的空列表
xlines=[] #创建存放道号的空列表
for i in range(1,2): #只预测了第一面,所以线号只有1
    for j in range(110): #道号为110道
        trace_num=j #道号
        linee_nm=i #线号
        inlines.append(linee_nm) #将线号追加进创建的空列表中
        xlines.append(trace_num) #将道号追加进创建的空列表中
inlines=np.array(inlines) #将线列表转换为数组
xlines=np.array(xlines) #将道列表转换为数组
inlines=inlines[np.newaxis, :] #在第一维前加一个维度
    # print(inlines.shape)
xlines=xlines[np.newaxis, :] #在第一维前加一个维度
    # print(xlines.shape)
predict=np.concatenate((inlines,xlines),axis=0) #将线数组和道数组进行拼接
    # print(predict.shape)
predict=np.transpose(predict) #将拼接后数组进行转置
    # print(predict)
predict=np.concatenate((predict,predictive_y_for_training),axis=1) #将转置后数组与预测结果拼接
    # print(predict)

你可能感兴趣的:(语法学习,numpy,python,开发语言,深度学习)