【问题标题】:Question about turning a list of numpy arrays into an object array关于将numpy数组列表转换为对象数组的问题
【发布时间】:2021-12-30 03:29:48
【问题描述】:

我有一个关于将 numpy 数组列表转换为对象数组的问题。

import numpy as np

testing_1=[np.array([1]),np.array([2]),np.array([3]),np.array([4]),np.array([np.nan])]
testing_1_array=np.asarray(testing_1, dtype=object)

testing_2=[np.array([1]),np.array([2,3]),np.array([4]),np.array([np.nan])]
testing_2_array=np.asarray(testing_2, dtype=object)

这会导致两种截然不同的结果:

testing_1_array
Out[12]: 
array([[1],
       [2],
       [3],
       [4],
       [nan]], dtype=object)

testing_2_array
Out[13]: array([array([1]), array([2, 3]), array([4]), array([nan])], dtype=object)

我认为不同之处在于 testing_2_array 中并非所有数组都具有相同的大小。 有什么方法可以强制 numpy 以与 testing_2_output 相同的方式输出 testing_1_array ,这样我就不必额外检查初始列表中的所有数组是否具有相同的大小?

【问题讨论】:

    标签: python arrays list numpy


    【解决方案1】:

    np.array 在可能的情况下尝试创建多维数字 dtype 数组。创建一个参差不齐的对象 dtype 数组是一个后备选项。对于一些形状的组合,即使这样也会引发错误。指定 object dtype 不会改变基本行为。

    创建一个“空”数组并填充它是最通用的选择。

    In [272]: arr = np.empty(5,object)      # filled with None
    In [273]: arr[:] = [np.array([1]),np.array([2]),np.array([3]),np.array([4]),np.a
         ...: rray([np.nan])]
    In [274]: arr
    Out[274]: 
    array([array([1]), array([2]), array([3]), array([4]), array([nan])],
          dtype=object)
    

    它也适用于参差不齐的形状:

    In [276]: arr = np.empty(4,object)
    In [277]: arr[:] = [np.array([1]),np.array([2,3]),np.array([4]),np.array([np.nan
         ...: ])]
    In [278]: arr
    Out[278]: array([array([1]), array([2, 3]), array([4]), array([nan])], dtype=object)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-02
      • 2018-10-08
      • 2017-03-08
      • 2019-08-30
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多