在Python中使用for循环将数字列表添加到空列表中
最近遇到了一堵墙,虽然事情有些简单,但无论怎样我都无法解决它。 我创建了一个小函数,它计算一些值并返回一个列表作为输出值在Python中使用for循环将数字列表添加到空列表中,python,pandas,Python,Pandas,最近遇到了一堵墙,虽然事情有些简单,但无论怎样我都无法解决它。 我创建了一个小函数,它计算一些值并返回一个列表作为输出值 def calc(file): #some calculation based on file return degradation #as a list 例如,对于文件“data1.txt” 对于文件“data2.txt” 由于我有几个文件要应用calc(),所以我希望它们横向连接,以便将它们连接到一个数组中,该数组的行数和列数与我的文件数一样多。我们计
def calc(file):
#some calculation based on file
return degradation #as a list
例如,对于文件“data1.txt”
对于文件“data2.txt”
由于我有几个文件要应用calc(),所以我希望它们横向连接,以便将它们连接到一个数组中,该数组的行数和列数与我的文件数一样多。我们计划用for
循环来完成它
对于这种特殊情况,如下所示:
output = 1 , 1
0.9,0.8
0.8,0.6
0.5,0.2
也尝试过熊猫,但没有成功
import numpy as np
arr2d = np.array([[1, 2, 3, 4]])
arr2d = np.append(arr2d, [[9, 8, 7, 6]], axis=0).T
预期输出如下所示:
array([[1, 9],
[2, 8],
[3, 7],
[4, 6]])
您可以使用
numpy.hstack()
来实现这一点。
假设您拥有来自for循环前两次迭代的前两个文件的数据。
data1.txt为您提供
degradation1 = [1,0.9,0.8,0.5]
degradation2 = [1,0.8,0.6,0.2]
data2.txt为您提供
degradation1 = [1,0.9,0.8,0.5]
degradation2 = [1,0.8,0.6,0.2]
首先,必须将两个列表转换为列表列表
degradation1 = [[i] for i in degradation1]
degradation2 = [[i] for i in degradation2]
这给出了输出
print(degradation1)
print(degradation2)
[[1], [0.9], [0.8], [0.5]]
[[1], [0.8], [0.6], [0.2]]
现在,您可以使用numpy.hstack()
来堆叠数据
这给出了输出
array([[1. , 1. ],
[0.9, 0.8],
[0.8, 0.6],
[0.5, 0.2]])
array([[1. , 1. , 1. ],
[0.9, 0.8, 0.3],
[0.8, 0.6, 0.6],
[0.5, 0.2, 0.4]])
假设您在for循环的第三次迭代中有一个文件data3.text,它给出
degradation3 = [1,0.3,0.6,0.4]
您可以按照上面相同的步骤将其堆叠为stacked
。遵循以下步骤;转换为列表列表,用堆叠的堆叠
degradation3 = [[i] for i in degradation3]
stacked = numpy.hstack(stacked,degradation3)
这将为您提供输出
array([[1. , 1. ],
[0.9, 0.8],
[0.8, 0.6],
[0.5, 0.2]])
array([[1. , 1. , 1. ],
[0.9, 0.8, 0.3],
[0.8, 0.6, 0.6],
[0.5, 0.2, 0.4]])
您可以在整个循环中继续此操作。假设my\u list
是您的列表列表
我的清单=[
[1, 2, 3, 4],
[10, 20, 30, 40],
[100, 200, 300, 400]]
结果=[]
对于my_列表[0]中的u:
结果。追加([]))
对于my_列表中的l:
对于范围内的i(len(result)):
结果[i]。追加(l[i])
对于行输入结果:
打印(行)
输出将是
[1, 10, 100]
[2, 20, 200]
[3, 30, 300]
[4, 40, 400]
因为你似乎想处理列表
## degradations as list
degradation1 = [1,0.8,0.6,0.2]
degradation2 = [1,0.9,0.8,0.5]
degradation3 = [0.7,0.9,0.8,0.5]
degradations = [degradation1, degradation2, degradation3]
## CORE OF THE ANSWER ##
degradationstransposed = [list(i) for i in zip(*degradations)]
print(degradationstransposed)
[[1, 1, 0.7], [0.8, 0.9, 0.9], [0.6, 0.8, 0.8], [0.2, 0.5, 0.5]]
似乎你正在寻找的是一个numpy矩阵。