#python #arrays
Вопрос:
У меня есть следующий код MATLAB, который отлично работает с текстовыми файлами данных, теперь я пытаюсь переписать его с помощью Python, но сталкиваюсь с ошибками. У меня есть результаты, к которым я пытаюсь применить некоторые вычисления (выполнить анализ данных). Мои результаты представлены в формате двоичных файлов, и у меня есть специальный пакет, который я использую, чтобы помочь мне импортировать данные. Например, вот ne
1024x256
массив с числом файлов 159, напечатанных на каждой итерации. Итак, в MATLAB я могу просто сделать следующее:
% Load data:
frame = 6; % how many number of output files
ne_bg = load([DirPath '/ne_unpert.txt']);
ne_p = load([DirPath '/ne_' num2str(frame) '.txt']);
% perform calculations on data:
ne = ne_bg ne_p;
dn_over_n = ne_p ./ ne;
Поскольку MATLAB легко работает с многомерными массивами и матрицами, я изо всех сил пытаюсь интерпретировать это на python.
Мой код на Python:
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import matplotlib.gridspec as gridspec
import matplotlib.colors as colors
import matplotlib.patches as patches
import scipy.optimize as opt
from scipy.special import erf, comb, gamma, gammainc
import scipy.constants as const
from scipy.integrate import odeint
import sys
from glob import glob
from mpl_toolkits.axes_grid1 import make_axes_locatable
import Package as pg
# Initialize sizes
ne = np.zeros((1024,256))
ne_p = np.zeros((1024,256))
# Data
data = pg.GData('ne_p.bp')
dg = pg.GInterpModal(data, 2, 'ms')
#dg.interpolate(overwrite=True)
ne_p = data.getValues()
data = pg.GData('ne0.gkyl')
dg = pg.GInterpModal(data, 2, 'ms')
#dg.interpolate(overwrite=True)
ne_bg = data.getValues()
for i in range(1,159): # would like to look at files start from 1 to 159 not 0
data = pg.GData('ne{:d}.gkyl'.format(i))
dg = pg.GInterpModal(data, 2, 'ms')
ne[i,:] = data.getValues() # ERROR HERE
dn_over_n = ne_p/ne # get
....
Сообщение об ошибке:
ValueError Traceback (most recent call last)
<ipython-input-35-d6134fb807e8> in <module>
48 dg = pg.GInterpModal(data, 2, 'ms')
49 #dg.interpolate(overwrite=True)
---> 50 ne[i,:] = data.getValues()
ValueError: could not broadcast input array from shape (1024,256,1) into shape (256)
Может кто-нибудь показать мне, как это исправить, и объяснить, что это значит?