我正在从在线模型中下载csv格式的数据表。
数据包括年龄列。
当列中的所有数据都为一个年龄时,我的程序可以正常工作,但是现在我正在下载年龄范围较大的数据,这样我可能在10亿年时拥有400行数据,然后在350处拥有350行数据。 11亿年等。
csv文件中大约有30,000行40列。
我想我会创建一个由年龄控制的嵌套列表,然后遍历每个子列表。
我按如下方式提取数据
log_age = data_upload[:,2]
mass = data_upload[:,5]
log_L = data_upload[:,6]
log_Teff = data_upload[:,7]
log_g = data_upload[:,8]
mbolmag = data_upload[:,24]
Umag = data_upload[:,25]
Bmag = data_upload[:,26]
如何从这些单独的列表中创建嵌套列表?
如果我有如下列表,则可以概括该问题:
age = [1,1,1,1,1,1,1,1,1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.2,1.2,1.2 ...]
如何将其转换为以下格式:
[[1,1,1,1,1,1,1,1,1,1],[1.1,1.1,1.1,1.1,1.1,1.1,1.1],[1.2,1.2,1.2 ...] ]
我需要使用年龄列表的结构对所有列表执行此操作。
我认为列表理解可能是一种方法?我遇到过它们,但真的不知道如何使用它们。
有一个名为np.unique的命令,它将在我的原始列表中列出唯一编号,因此我可以通过以下方式开始:
unique_age = np.unique(age)
nested_age = [[] for _ in range(len(unique_age))]
然后我可以对要创建的所有嵌套列表重复此操作,但是然后我必须遍历每个列表并将它们转换为嵌套列表。
有人可以告诉我该怎么做吗?
谢谢
答案 0 :(得分:1)
我想生成如下结果:
from collections import Counter
age = [1,1,1,1,1,1,1,1,1,1.1,1.1,1.1,1.1,1.1,1.1,1.1,1.2,1.2,1.2]
c = Counter(age)
result = [[k]*v for k,v in c.items()]
print(result)
# Result would be:
# [[1, 1, 1, 1, 1, 1, 1, 1, 1], [1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1], [1.2, 1.2, 1.2]]
第3行表示:
第4行表示: