1

我有一个大数据,我想命名列,例如 '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。谢谢!

4

2 回答 2

3

从您的工作中扩展,您可以使用列表推导来完成此操作。它将使用适当的标签自动创建所需数量的列:

A = np.random.randint(5, size=(10, 10))
B = A.ravel().view([ (str(x),'i4') for x in range(1, len(A[0])+1) ])

然后在这种情况下你可以print(A['2'])从 1 到 10 。

于 2019-07-17T23:12:04.543 回答
0

Pandas 会在这方面做得很好,所以如果您避免它的唯一原因是您不需要掌握另一个库,那么您可能值得花时间学习 Pandas,以便将来使用它。

另一种方法是 xarray,它处理 n 维数据。
http://xarray.pydata.org/en/stable/

您可以命名两个轴(例如调用一个“时间”)和其中的值(例如调用时间轴上的特定点“开始”)。然后,您可以切出在“时间”轴上具有“开始”值的所有数据。

于 2019-07-17T23:08:05.613 回答