Как заполнить пустой массив выборочно?
Я новичок в Python и попытался сделать следующее с небольшим успехом:
В папке есть файлы *.columns, которые содержат 5 (0-4) столбцов и 500 строк. Мне нужно сложить столбцы 1-4 по всем файлам *.columns и отобразить результат по первому столбцу любого из них (все равны).
Я создал пустой массив, в который я хочу вставить первый (0) столбец массива "x_array3" и столбцы 1-4 из "y_array0". Все они имеют одинаковый размер (500 л, 5 л).
Не могли бы вы дать мне совет, как поступить? Я потерян прямо сейчас.
Кристиан
import glob
import numpy as np
ListOfFiles = glob.glob("*.columns")
y_array0 = 0
for filename in ListOfFiles:
y_array1 = np.genfromtxt(filename, skip_header = 1, usecols = (0, 1, 2, 3, 4))
y_array0 = y_array0 + y_array1
x_array3 = np.genfromtxt(ListOfFiles[0], skip_header = 1, usecols = (0, 1, 2, 3, 4))
empty_array = np.empty(shape=(500, 5))
ausgabe_array = ??? here I'm stuck ???
np.savetxt('SX_DOS.out', ausgabe_array)
2 ответа
Я нашел рабочее решение. Я читаю во всех столбцах как отдельные массивы и объединяю их в конце. Тем не менее, кто-нибудь может дать мне подсказку, как заполнить пустой массив выбранными элементами из другого массива (с другим размером)?
Chr.
import glob
import numpy as np
ListOfFiles = glob.glob("*.columns")
y_array_s0 = 0
y_array_p0 = 0
y_array_d0 = 0
y_array_f0 = 0
for filename in ListOfFiles:
y_array_s1 = np.genfromtxt(filename, skip_header = 1, usecols = (1))
y_array_s0 = y_array_s0 + y_array_s1
y_array_p1 = np.genfromtxt(filename, skip_header = 1, usecols = (2))
y_array_p0 = y_array_p0 + y_array_p1
y_array_d1 = np.genfromtxt(filename, skip_header = 1, usecols = (3))
y_array_d0 = y_array_d0 + y_array_d1
y_array_f1 = np.genfromtxt(filename, skip_header = 1, usecols = (4))
y_array_f0 = y_array_f0 + y_array_f1
x_array3 = np.genfromtxt(ListOfFiles[0], skip_header = 1, usecols = (0))
ausgabe_array = np.transpose(np.array((x_array3, y_array_s0, y_array_p0, y_array_d0,y_array_f0)))
np.savetxt('SX_DOS.out', ausgabe_array)
Я думаю, что вы пытаетесь суммировать столбцы в импортированном массиве.
Предполагая, что это работает:
y_array1 = np.genfromtxt(filename, skip_header = 1, usecols = (0, 1, 2, 3, 4))
затем
y_array0 = y_array1.sum(axis=0)
должен дать сумму столбцов.
Что касается прорисовки, я бы порекомендовал http://matplotlib.org/