【问题标题】:numpy dtype duplicate the arraynumpy dtype 复制数组
【发布时间】:2021-08-26 08:08:25
【问题描述】:

我尝试在一个 numpy 数组中添加一个 dtype(用于创建 ply 文件),但是当我写这个时:

list_example = np.array([[1,2,3]], dtype=[('example', 'i4', (3,))]

结果是:

array([[([1, 1, 1],), ([2, 2, 2],), ([3, 3, 3],)]],
      dtype=[('example', '<i4', (3,))])

而且我不明白为什么它会重复我数组的每个组件。因为如果我这样做:

np.array([([1,2,3], 255)], dtype = [('example', 'i4', (3,)), ('color', 'u1')])

我得到:

array([([1, 2, 3], 255)], dtype=[('example', '<i4', (3,)), ('color', 'u1')])

我的数组不重复 [1,2,3]

感谢您的帮助!

【问题讨论】:

    标签: arrays python-3.x numpy dtype


    【解决方案1】:

    在创建结构化数组时,列表和元组之间的区别很重要。如您的工作案例所示,输入应与打印显示相匹配。

    对于第一个 dtype,请尝试:

    In [525]: np.zeros(1, dtype=[('example', 'i4', (3,))])
    Out[525]: array([([0, 0, 0],)], dtype=[('example', '<i4', (3,))])
    

    模仿:

    In [526]: np.array([([1,2,3],)], dtype=[('example', 'i4', (3,))])
    Out[526]: array([([1, 2, 3],)], dtype=[('example', '<i4', (3,))])
    

    np.array([([1,2,3])], dtype=[('example', 'i4', (3,))]) 没有帮助,因为 () 包含一个没有逗号的列表,所以它们什么都不做。您的 dtype 有一个字段,因此输入的每条记录必须有一个元素元组。

    【讨论】:

      【解决方案2】:

      您可以使用rec.fromarrays

      >>> np.rec.fromarrays([([1,2,3])], dtype=[('example', 'i4', (3,))])
      
      rec.array(([1, 2, 3],),
                dtype=[('example', '<i4', (3,))])
      

      【讨论】:

        猜你喜欢
        • 2021-09-19
        • 1970-01-01
        • 2011-12-07
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 2019-03-13
        • 2021-10-25
        • 2015-11-01
        相关资源
        最近更新 更多