Вы попробовали numpy.column_stack
?
Powers = np.column_stack([Powers,Pname])
Однако массив пуст первым, поэтому убедитесь, что массив не пуст, прежде чем конкатенации или вы получите ошибку измерения рассогласования:
import numpy as np
Powers = np.array([])
with open('paths powers.tex', 'r') as paths_list:
for file_path in paths_list:
with open(file_path.strip(), 'r') as file:
data = np.loadtxt(file_path.strip())
Pname = data[0:32446,0]
if len(Powers) == 0:
Powers = Pname[:,None]
else:
Powers = np.column_stack([Powers,Pname])
np.savetxt("Powers.txt", Powers)
len(Powers)
будет проверять количество строк которые существуют в Powers
. В начале это должно быть 0, поэтому на первой итерации это верно, и нам нужно будет явно сделать Powers
равным двухмерному массиву с одним столбцом, который состоит из первого столбца в вашем файле. Powers = Pname[:,None]
поможет вам сделать это, то же самое, что и Powers = Pname[:,np.newaxis]
. Это преобразует 1D-массив в 2D-массив с одноэлементным столбцом. Теперь проблема заключается в том, что когда у вас есть 1D массивы в numpy
, они агностически связаны с тем, являются ли они строками или столбцами. Поэтому перед добавлением необходимо явно преобразовать массивы в столбцы. numpy.column_stack
позаботится об этом.
Однако вам также необходимо убедиться, что Powers
является двумерной матрицей с одним столбцом при первом итерации цикла. Если вы не хотите использовать numpy.column_stack
, вы все равно можете использовать numpy.append
, но убедитесь, что то, что вы конкатенируете с массивом, - это столбец. То, что мы говорили выше, должны помочь вам сделать это:
import numpy as np
Powers = np.array([])
with open('paths powers.tex', 'r') as paths_list:
for file_path in paths_list:
with open(file_path.strip(), 'r') as file:
data = np.loadtxt(file_path.strip())
Pname = data[0:32446,0]
if len(Powers) == 0:
Powers = Pname[:,None]
else:
Pname = Pname[:,None]
Powers = np.append(Powers, Pname, axis=1)
np.savetxt("Powers.txt", Powers)
второе утверждение гарантирует, что массив становится 2D массив с одноплодной колонки перед конкатенации.
Если вы хотите «присоединить» или иначе объединить по оси «= = 1», вам нужно начать с массивов, имеющих не менее 2 осей. 'Powers = np.zeros ((32446,1))' – hpaulj