Лучший способ создать большой массив в Python? - PullRequest
0 голосов
/ 15 апреля 2019

Я новичок в python и пытаюсь создать большой массив. Ищите лучший способ сделать это.

По сути, я пытаюсь создать большой массив в python для вставки в другое приложение. Массив будет иметь переменное количество строк и 5 столбцов. У меня есть данные для двух столбцов, хранящихся в других списках, и я хотел бы перебрать эти списки, чтобы заполнить эти два столбца в моем массиве.

Это будет выглядеть так:

x  y  z  l1 w1
x  y  z  l2 w2
x  y  z  l3 w3
x  y  z  l4 w4
x  y  z  l5 w5
x  y  z  l6 w6
x  y  z  l7 w7

Я видел сообщения об использовании списков или массивов в numpy, но ничего о циклическом просмотре списка для их заполнения. Есть предложения?

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Если, как вы говорите в комментариях, ваши значения x, y и z повторяются, вы можете легко их создать, используя numpy.full. Если два списка разного размера одинаковы и определяют количество строк, было бы довольно легко превратить их в numpy.ndarray s, вызвав list1 = numpy.asarray(list1) и снова для list2. Вы можете получить их длину, используя len(list1). Затем вы можете проверить функции numpy stacking (hstack) для добавления numy-массивов вместе.

import numpy as np
# expects there to be scalars: x, y, and z 
# and two lists: list1, list2
length = len(list1)
list1 = np.asarray(list1)
list2 = np.asarray(list2)
x = np.full(length, x)
y = np.full(length, y)
z = np.full(length, z)

combo = np.hstack((x, y, z, list1, list2))

Если все это делается в numpy, все должно быть одного типа данных (int, float, boolean и т. Д.).

0 голосов
/ 15 апреля 2019

Мне нужно знать, на что похожи ваши списки ввода, но я попытаюсь. Как то так?

array1 = [1,2,3,4]
array2 = ['a','b','c','d']

output_array = [['x','y','z',a1,a2] for a1,a2 in zip(array1,array2)]
print(output_array)

[['x', 'y', 'z', 1, 'a'], 
 ['x', 'y', 'z', 2, 'b'], 
 ['x', 'y', 'z', 3, 'c'], 
 ['x', 'y', 'z', 4, 'd']]

Вещи, которые я использую здесь: zip (перебирает 2 массива и выравнивает их сначала по одному списку с первым по второму списку ... затем по 2-му и т. Д.)

понимание списка (создает встроенный список, гугл об этом, много хороших объяснений)

если вы хотите затем превратить это обратно в кадр данных pandas:

import pandas as pd
pd.DataFrame(columns=['a','b','c','d','e'], data=output_array)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...