python - numpy 记录数组与时间?

标签 python arrays numpy recarray

我正在尝试将 XML 文件读入 NumPy 记录数组。时间采用祖鲁时间 u'2013-06-06T17:47:38Z',其他列为 float

时间和 float 都可以转换为NumPy数组。但是,如果我尝试创建一个 recordarray,它会以多种方式失败(这可能表明我不知道如何创建记录数组):

In [124]: dataarr = np.array(zip(*[datadict[k] for k in keys]),
   .....:                     dtype=[(k,dtypes[k]) for k in keys])
Traceback (most recent call last):
  File "<ipython-input-124-d59123796cfa>", line 2, in <module>
    dtype=[(k,dtypes[k]) for k in keys])
ValueError: Cannot create a NumPy datetime other than NaT with generic units

In [125]: dataarr = np.array([datadict[k] for k in keys],
                    dtype=[(k,dtypes[k]) for k in keys])
Traceback (most recent call last):
  File "<ipython-input-125-ee9077bf1961>", line 2, in <module>
    dtype=[(k,dtypes[k]) for k in keys])
TypeError: expected a readable buffer object

In [126]: dataarr = np.array([datadict[k] for k in keys],
                    dtype=[dtypes[k] for k in keys])
Traceback (most recent call last):
  File "<ipython-input-126-a456052bdfd4>", line 2, in <module>
    dtype=[dtypes[k] for k in keys])
TypeError: data type not understood

In [127]: dtypes
Out[127]: {'altitude': 'float', 'distance': 'float', 'time': 'datetime64'}

创建包含时间的记录数组的正确方法是什么?

(keys 是一个列表,datadictdtype 是字典)

最佳答案

哎呀,用 numpy datetime64 in recarray 算出来了

我尝试使用datetime[D],但失败了:

In [19]: dtypes
Out[19]: {'altitude': 'float', 'distance': 'float', 'time': 'datetime64[D]'}

In [20]: dataarr = np.array(zip(*[datadict[k] for k in keys]),
                    dtype=[(k,dtypes[k]) for k in keys])
Traceback (most recent call last):
  File "<ipython-input-20-d59123796cfa>", line 2, in <module>
    dtype=[(k,dtypes[k]) for k in keys])
TypeError: Cannot cast NumPy timedelta64 scalar from metadata [s] to [D] according to the rule 'same_kind'

但是日期时间[s]有效:

In [22]: dtypes
Out[22]: {'altitude': 'float', 'distance': 'float', 'time': 'datetime64[s]'}

In [23]: dataarr = np.array(zip(*[datadict[k] for k in keys]),
                    dtype=[(k,dtypes[k]) for k in keys])

关于python - numpy 记录数组与时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17014497/

相关文章:

python - 如何在指定的 col 位置更改 2D numpy 数组中的某些元素?

c - 将字符串数组传递出c中的函数

java - 安卓java : foreach through json array returning values?

python - Python中根据唯一键将列中的类别转换为编码为1或0的多列

python - 使用 numpy 来减小矩阵的大小

python按空格和换行符拆分字符串

python - 任何可读和可发音的 Python 密码生成器?

python - Python 3 中的 re.findall

javascript - 在javascript中将多个数组分成相等的 block

python - Numpy:在每行中的特定索引之后替换行的剩余列