我有一个大数据,我想命名这些列,例如'1','2',...。对于少量数据,我可以做
np.random.randint(5, size=(50, 2)) # synthesis data
A = A.ravel().view([('1','i8'),('2','i8'),]).astype([('1','i4'),('2','i8'),])
,然后使用
调用单个列print(A['2'])
我想知道是否有一种方法可以针对任何随机大小和列号自动执行此操作。我的偏好是使用NumPy,而不是Pandas。谢谢!
答案 0 :(得分:4)
从您的工作扩展,您可以使用列表理解来完成此任务。它将自动创建具有适当标签的所需列数:
A = np.random.randint(5, size=(10, 10))
B = A.ravel().view([ (str(x),'i4') for x in range(1, len(A[0])+1) ])
在这种情况下,您可以从1到10进行print(A['2'])
。
答案 1 :(得分:0)
熊猫会很好地做到这一点,因此,如果您避免出现这种情况的唯一原因是您不需要与其他图书馆打交道,那您值得花时间学习熊猫,以便您将来可以使用它
另一个选择是xarray,它可以处理n维数据。
http://xarray.pydata.org/en/stable/
您既可以命名轴(例如,调用一个“时间”),也可以命名轴中的值(例如,将时间轴上的特定点称为“开始”)。然后,您可以在“时间”轴上切出所有具有“开始”值的数据。