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]]
#即从一个一行的一维数组,变成一个一行五列的二维数组
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)