Bas*_*asj 5 python numpy sparse-matrix multidimensional-array pandas
使用 Python/Numpy,我正在处理 n 维数据(最好在 a 中ndarray),这样:
(1):参差不齐的数组
例如A[0, :, :],..., A[49, :, :]可以是形状 100x100,并且A[50, :, :]可以是形状 10000x10000:我不想创建形状为 (..., 10000, 10000) 的 ndarray,因为这会浪费空间:A[n, :, :]仅包含 n = 0 .. 49 的 100x100 个系数。
(2):标记索引代替位置索引
我还希望能够使用B[:, :, :, :, 202206231808], B[:, :, :, :, 19700101000000],即最后一个维度将是格式为 YYYYMMDDhhmmss 的数字时间戳或更一般的整数标签(不在连续的 0 .. n-1 范围内)
(3): 简单的类似 Numpy 的算术
所有这些都应该(尽可能地)保留所有标准 Numpy 操作,例如B.mean(axis=4)对所有时间戳上的数据进行平均,以及类似有用的 Numpy 操作等。
(4):序列化/随机访问
我们应该能够以这样的数据结构将 100 GB 的数据保存到磁盘上。然后第二天,如果我们只想修改几个值,我们应该能够将其保存在磁盘上,而无需重写整个 100 GB 文件:
x = datastore.open('datastore.dat') # open the data store, *without* loading everything in memory
x[20220624000000, :, :, :] = 0 # modify some values
x[20220510120000, :, :, :] -= x[20220510120000, :, :, :].mean() # modify other values
x.close() # only a few bytes written to disk
Run Code Online (Sandbox Code Playgroud)
对于这样一个 n 维数组,使用 Numpy 或 Pandas 来说,正确的数据结构是什么? (注意:我可能有 5 或 6 个维度)
据我所知,您可以使用一种不一致的维度数据结构,如下tensorflow.ragged.constant()所示:
import numpy as np
import tensorflow as tf
l1 = tf.ragged.constant([[0, 1, 0], [1, 1]])
print(l1)
Run Code Online (Sandbox Code Playgroud)
此处使用 TensorFlow 库的主要优点是,您可以通过简单的指令将张量转换为 NumPy 数组your_tensor.numpy()。
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |