将ndarray的最后一个维转换为元组/ recarray

标记NS

如果有人可以提供帮助,我会非常感激,因为它使我疯狂了几个小时!

我有一个ndarray如下:

array([[[0, 0],
        [0, 2],
        [0, 4]],
       [[1, 0],
        [1, 2],
        [1, 4]]])

我想将其转换为记录数组:

array([[(0, 0),
        (0, 2),
        (0, 4)],
       [(1, 0),
        (1, 2),
        (1, 4)]],
      dtype=[('x', '<i4'), ('y', '<i4')])
塞弗特

您可以简单地使用.view“更改” dtype和.reshape“删除”最后一个尺寸:

>>> import numpy as np

>>> arr = np.array([[[0, 0], [0, 2], [0, 4]],
...                 [[1, 0], [1, 2], [1, 4]]])

>>> newarr = arr.view(dtype=np.dtype([('x', 'i4'), ('y', 'i4')]))
>>> newarr = newarr.reshape(newarr.shape[:-1])
>>> newarr
array([[(0, 0), (0, 2), (0, 4)],
       [(1, 0), (1, 2), (1, 4)]], 
      dtype=[('x', '<i4'), ('y', '<i4')])

请注意,您必须注意,.view在此处硬编码dtype可能不是“安全的”。但是您可以简单地重用当前的dtype:

>>> newarr = arr.view(dtype=np.dtype([('x', arr.dtype), ('y', arr.dtype)]))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

numpy:从 recarray dtype 获取 ndarray dtype

如何将numpy recarray的子集转换为连续数组?

python结构化/ recarray类型转换行为

从两个列表python创建numpy.recarray

根据一列中的值拆分numpy recarray

如何将字典列表转换为 NumPy recarray(按名称访问字段)

将 numpy.recarray 转换为 dict 将条目分配给它们的基本类型以传递给 fastAPI

将 JSON 格式的字符串导入 numpy.recarray 的最快方法?

将2d数组(field)添加到numpy recarray

当列之一是数组时,如何更改numpy recarray的dtype?

Python 将 4 元组列表转换为三个 2 元组,加入元组中的最后一个元素

将数组值添加到 numpy recarray,其中标识符与其他数组匹配

numpy.recarray.tobytes的倒数

来自字节或字符串的 Numpy recarray

Python,高效地创建 numpy recarray

将列表的元组转换为一个列表

将一个右值的元组转换为一个左值的元组

如何将一维ndarray的列表转换为二维ndarray(mxnet ndarray)

将元组类型转换为另一个元组类型

将元组列表转换为字典,给每个元组一个不同的键

将元组列表转换为数据框-元组的第一个元素是列名

将pandas数据框中的行中的元组列表转换为一个元组列表

为什么将 Python dict 转换为元组会返回一个键元组?

将多个二维数组转换为一个3维数组

将两个列表转换为一个ndarray

NumPy“记录数组”或“结构化数组”或“ recarray”

赋值后,numpy recarray的花式索引丢失了引用

将两个一维数组转换为一个二维数组-Matlab

将两个单维数组转换为一个多维数组