#!/usr/bin/python
#coding:utf-8
import numpy as np
import os
# 关于中心点对称,输入为3维数组
def gycenter(f):
# 获得每一维度的长度
coordZ = f.shape[0]
coordY = f.shape[1]
coordX = f.shape[2]
for z in range(0, coordZ//2):
for y in range(0, coordY):
for x in range(0, coordX):
temp = f[z, y, x]
f[z, y, x] = f[coordZ-z-1, coordY-y-1, coordX-x-1]
f[coordZ-z-1, coordY-y-1, coordX-x-1] = temp
# 关于x轴对称,输入为3维数组
def gyx(f):
# 获得每一维度的长度
coordZ = f.shape[0]
coordY = f.shape[1]
coordX = f.shape[2]
for z in range(0, coordZ // 2):
for y in range(0, coordY):
for x in range(0, coordX):
temp = f[z, y, x]
f[z, y, x] = f[coordZ - z - 1, coordY - y - 1, x]
f[coordZ - z - 1, coordY - y - 1, x] = temp
# 关于y轴对称,输入为3维数组
def gyy(f):
# 获得每一维度的长度
coordZ = f.shape[0]
coordY = f.shape[1]
coordX = f.shape[2]
for z in range(0, coordZ // 2):
for y in range(0, coordY):
for x in range(0, coordX):
temp = f[z, y, x]
f[z, y, x] = f[coordZ - z - 1, y, coordX - x - 1]
f[coordZ - z - 1, y, coordX - x - 1] = temp
# 关于z轴对称,输入为3维数组
def gyz(f):
# 获得每一维度的长度
coordZ = f.shape[0]
coordY = f.shape[1]
coordX = f.shape[2]
for z in range(0, coordZ // 2):
for y in range(0, coordY):
for x in range(0, coordX):
temp = f[z, y, x]
f[z, y, x] = f[z, coordY - y - 1, coordX - x - 1]
f[z, coordY - y - 1, coordX - x - 1] = temp
# 关于x0y面对称,输入为3维数组
def gy_x0y(f):
# 获得每一维度的长度
coordZ = f.shape[0]
coordY = f.shape[1]
coordX = f.shape[2]
for z in range(0, coordZ // 2):
for y in range(0, coordY):
for x in range(0, coordX):
temp = f[z, y, x]
f[z, y, x] = f[coordZ - z - 1, y, x]
f[coordZ - z - 1, y, x] = temp
# 关于x0z面对称,输入为3维数组
def gy_x0z(f):
# 获得每一维度的长度
coordZ = f.shape[0]
coordY = f.shape[1]
coordX = f.shape[2]
for z in range(0, coordZ):
for y in range(0, coordY // 2):
for x in range(0, coordX):
temp = f[z, y, x]
f[z, y, x] = f[z, coordY - y - 1, x]
f[z, coordY - y - 1, x] = temp
# 关于y0z面对称,输入为3维数组
def gy_y0z(f):
# 获得每一维度的长度
coordZ = f.shape[0]
coordY = f.shape[1]
coordX = f.shape[2]
for z in range(0, coordZ):
for y in range(0, coordY):
for x in range(0, coordX // 2):
temp = f[z, y, x]
f[z, y, x] = f[z, y, coordX - x - 1]
f[z, y, coordX - x - 1] = temp
filePath="/Volumes/ZJN/tianchi/data/train_nodule_py"
filelist = os.listdir(filePath)#生成文件列表
#批处理指定文件夹中的文件,以下是只生成中心对称变化的NPY文件
#若要改成关于x轴对称只需要修改文件名和调用的函数名
for files in filelist:
oldDir = os.path.join(filePath, files)
oldFile=np.load(oldDir)
gycenter(oldFile)# 利用gycenter函数生成做过中心对称变化的3D矩阵
newDir0 = os.path.basename(filePath) + "_cen"
fatherPath = os.path.dirname(filePath)
newDir = os.path.join(fatherPath, newDir0)#新的npy文件所在的目录
if not os.path.exists(newDir):#若该目录文件不存在则生成
os.mkdir(newDir)
newfileName = os.path.join(newDir, files)#新的文件的名字
np.save(newfileName, oldFile)#保存文件
python文件批处理
最新推荐文章于 2024-01-25 10:30:02 发布