簡體   English   中英

將 numpy arrays 的列表轉換為 numpy 數組,其中元素為 numpy arrays

[英]convert a list of numpy arrays into a numpy array in which elements are numpy arrays

Python 代碼將 numpy arrays 的列表轉換為具有 numpy arrays 作為其元素的 numpy 數組?

我有一個 arrays 的列表如下:

my_list

Output:

[array([1,2,3]),
    array(['a', 'b','c]),
    array(['text1', 'text2', 'text3'])
    ]

使用 np.asarray() 將元素轉換為如下所示的列表:

my_array = np.asarray(my_list)

my_array 看起來像:

array([[1,2,3],['a', 'b','c], ['text1', 'text2', 'text3']])

我要的那種output:

array([array([1,2,3]),array(['a', 'b','c]),array(['text1', 'text2', 'text3'])])

有人可以幫我處理代碼嗎?

In [173]: alist = [np.array([1,2,3]),
     ...:     np.array(['a', 'b','c']),
     ...:     np.array(['text1', 'text2', 'text3'])
     ...:     ]
In [174]: alist
Out[174]: 
[array([1, 2, 3]),
 array(['a', 'b', 'c'], dtype='<U1'),
 array(['text1', 'text2', 'text3'], dtype='<U5')]
In [175]: np.array(alist)
Out[175]: 
array([['1', '2', '3'],
       ['a', 'b', 'c'],
       ['text1', 'text2', 'text3']], dtype='<U21')

np.array嘗試制作盡可能高的多維數組。 同樣大小的3個arrays可以拼成一個(3,3)。

為避免這種情況,我們必須創建一個具有所需形狀和數據類型的目標數組,並從列表中分配值:

In [178]: arr = np.empty(3, object)
In [179]: arr[:] = alist
In [180]: arr
Out[180]: 
array([array([1, 2, 3]), array(['a', 'b', 'c'], dtype='<U1'),
       array(['text1', 'text2', 'text3'], dtype='<U5')], dtype=object)

如果列表包含不同大小的 arrays(或其他對象), np.array回退到制作這些項目的 object dtype 數組。 但請注意警告,並記住這是一個回退選項,正如您所發現的,這不是默認行為。

In [181]: alist.append([1,2])
In [182]: np.array(alist)
<ipython-input-182-7512d762195a>:1: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
  np.array(alist)
Out[182]: 
array([array([1, 2, 3]), array(['a', 'b', 'c'], dtype='<U1'),
       array(['text1', 'text2', 'text3'], dtype='<U5'), list([1, 2])],
      dtype=object)

並重復我的評論 - 為什么你想要一個 arrays 的數組? 與原始列表相比,它有什么優勢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM