Как заполнить пустой массив выборочно?

Я новичок в 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/

Другие вопросы по тегам