地震数据的Python各种输出方式
在进行地震数据处理时,注意到切片得出的二维numpy数据,其保存输出有多种保存方法,以下对Python各方法保存进行说明
1.numpy.save() 保存为 .npy/.npz
语法 :
numpy.save(file_name, arr)
参数:
file_name : 数据被保存到的文件或文件名。如果文件是一个字符串或路径,如果它还没有扩展名,将在文件名上添加一个 .npy扩展名。如果文件是一个文件对象,那么文件名将不会改变。
arr :要保存的阵列数据。
加载时使用如下函数
numpy.load('img.npy') #这里'img.npy'为加载的数据文件名
2.numpy.savetxt() 保存为.txt文件
语法:
numpy.savetxt('file_name', arr)
在保存的numpy数组较大时,无法在Python中直接查看全部,可以保存出txt文件进行查看。
3.cv2.imwrite() 保存为.png图片
语法:
cv2.imwrite(file_name, m0)
例子1:
import cv2
arr0 = np.array([[0.01,0.02,0.03], [0.01,0.02,0.03], [0.01,0.02,0.03]])
cv2.imwrite('arr0.png', arr0)
保存出的图片为:
由于只有一个通道,保存出来的为灰度图,这里我们的数值都接近0,故保存出来为黑色方块。
例子2:
import cv2
arr1 = np.array([[0,0,0], [300,300,300], [100,100,100]])
cv2.imwrite('arr1.png', arr1)
居中并且带尺寸的图片(这里做了放大处理,三层色块):
4.matplotlib中pyplot()的 comp=‘seismic’ 格式图片
此方法本质为保存出适合于seismic的热度图,用于报告等展示效果更好。
from matplotlib import pyplot as plt
arr0 = np.array([[0.01,0.02,0.03], [0.01,0.02,0.03], [0.01,0.02,0.03]])
fig = plt.figure('comp_arr0', dpi=300, figsize=(7, 2.5))
plt.imshow(arr0,
vmin=-.8,
vmax=.8,
aspect=1,
cmap="seismic",
alpha=1.0,
resample=True,
interpolation = "lanczos")
#设置坐标轴不显示
# plt.axis('off')
plt.colorbar(fraction=0.1145,
pad=0.01)
plt.savefig(os.path.join(save_dir, 'comp_arr1.png'),
format="png",
bbox_inches="tight",
dpi=300)
plt.show()
plt.close(fig)
这时保存的图像并不是数据的灰度值,而是进行处理后便于视觉观看的显示。