在python中创建大型数组的最佳方法?

时间:2019-04-15 20:30:21

标签: python arrays pandas list numpy

我是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 :(得分:0)

我需要知道您的输入列表是什么样的,但我会尝试。  像这样吗?

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个数组并将它们对齐,首先从一个列表到第一个列表再到第二个列表,然后是第二个列表,等等)

list comprehension(创建一个内联列表,使用google进行搜索,有很多很好的解释)

如果您想将其转换回熊猫数据框:

import pandas as pd
pd.DataFrame(columns=['a','b','c','d','e'], data=output_array)

答案 1 :(得分:0)

如果您在评论中说过,重复了x,y和z值,则可以使用numpy.full来轻松创建它们。如果两个大小不同的列表相同并且确定行数,则很容易通过调用numpy.ndarray并再次调用list2将它们变成list1 = numpy.asarray(list1)。您可以使用len(list1)获得它们的长度。然后,您可以签出将numpy数组附加在一起的numpy堆栈(hstack)函数。

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等)。