我是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中的数组的文章,但没有关于遍历列表来填充它们的内容。有什么建议吗?
答案 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等)。