Может ли кто-нибудь помочь мне преобразовать это, что находится в Python на языке C++, или порекомендовать мне программу, которая может это сделать? Есть 2 программы ..
import sys from lib_readPL4 import readPL4 from lib_readPL4 import convertType from lib_readPL4 import getVarData import numpy as np def main(args): # Call the library dfHEAD,data,miscData = readPL4(sys.argv[1]) # Give some information to the user print ("PL4 Header info:") print (miscData) print ("Data shape:") print (np.shape(data)) # Convert the header type convertType(dfHEAD) # EXAMPLES ############################################################### # Get time time = data[:,0] # Get some variable, remember ATP's variable has a maximum of 6 characters # Check for var types in github wiki # ~ sel_data = getVarData(dfHEAD,data,'TYPE','FROM','TO') # Launch ipython session import IPython as ipy ipy.embed() return 0 if __name__ == '__main__': import sys sys.exit(main(sys.argv))
**************************************************************************************
//////////////////////////////////////////////////////////////////////////////////////
def readPL4(pl4file): import mmap import struct import pandas as pd import numpy as np miscData = { 'deltat':0.0, 'nvar':0, 'pl4size':0, 'steps':0, 'tmax':0.0 } # open binary file for reading with open(pl4file, 'rb') as f: pl4 = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) # read DELTAT miscData['deltat'] = struct.unpack('<f', pl4[40:44])[0] # read number of vars miscData['nvar'] = struct.unpack('<L', pl4[48:52])[0] / 2 # read PL4 disk size miscData['pl4size'] = struct.unpack('<L', pl4[56:60])[0]-1 # compute the number of simulation miscData['steps'] from the PL4's file size miscData['steps'] = (miscData['pl4size'] - 5*16 - miscData['nvar']*16) / ((miscData['nvar']+1)*4) miscData['tmax'] = (miscData['steps']-1)*miscData['deltat'] # generate pandas dataframe to store the PL4's header dfHEAD = pd.DataFrame() dfHEAD['TYPE'] = '' dfHEAD['FROM'] = '' dfHEAD['TO'] = '' for i in xrange(0,miscData['nvar']): pos = 5*16 + i*16 h = struct.unpack('3x1c6s6s',pl4[pos:pos+16]) dfHEAD = dfHEAD.append({'TYPE': int(h[0]),\ 'FROM': h[1],\ 'TO': h[2]}, ignore_index=True) # Check for unexpected rows of zeroes # See https://github.com/ldemattos/readPL4/issues/2 expsize = (5 + miscData['nvar'])*16 + miscData['steps']*(miscData['nvar']+1)*4 nullbytes = 0 if miscData['pl4size'] > expsize: nullbytes = miscData['pl4size']-expsize # read and store actual data, map it to a numpy read only array data = np.memmap(f,dtype=np.float32,mode='r',shape=(miscData['steps'],miscData['nvar']+1),offset=(5 + miscData['nvar'])*16 + nullbytes) return dfHEAD,data,miscData # Convert types from integers to strings def convertType(df): df['TYPE'] = df['TYPE'].apply(lambda x: 'V-node' if x == 4 else x) df['TYPE'] = df['TYPE'].apply(lambda x: 'E-bran' if x == 7 else x) df['TYPE'] = df['TYPE'].apply(lambda x: 'V-bran' if x == 8 else x) df['TYPE'] = df['TYPE'].apply(lambda x: 'I-bran' if x == 9 else x) return 0 # Get desired variable data def getVarData(dfHEAD,data,Type,From,To): # Search for desired data in header df = dfHEAD[(dfHEAD['TYPE'] == Type) & (dfHEAD['FROM'] == From) & (dfHEAD['TO'] == To)] if not df.empty: data_sel = data[:,df.index.values[0]+1] # One column shift given time vector else: print ("Variable %s-%s of %s not found!"%(From,To,Type)) return(None) return(data_sel)
Что я уже пробовал:
Растрата фитона-это хороший вариант?
Dave Kreskowiak
Дайте определение слову "помощь". Потому что прямо сейчас это выглядит так, как будто вы хотите, чтобы кто-то преобразовал код eh для вас.
Нет никаких инструментов для преобразования между Python и C++.
ZurdoDev
Вы захотите сделать это сами.
Evanz159
не могли бы вы, пожалуйста, изменить его на c++, и вы очень добры, если вы также дадите мне несколько советов о том, как это сделать .. спасибо
ZurdoDev
Нет. Потому что нет прямого обращения. Например, ваш код использует печать. Это показывает данные пользователю. Есть миллион различных способов сделать это.
Просто перепиши его и будь готов.