2017-07-06 66 views
0
詮釋

我有以下陣列 「類標識碼」轉換U1陣列在Python

array([[array(['2'], 
    dtype='<U1')], 
    [array(['3'], 
    dtype='<U1')], 
    [array(['2'], 
    dtype='<U1')], 
    ..., 
    [array(['2'], 
    dtype='<U1')], 
    [array(['2'], 
    dtype='<U1')], 
    [array(['2'], 
    dtype='<U1')]], dtype=object) 

當我使用的功能:

class_id.astype(INT)

我得到的以下錯誤:

ValueError: setting an array element with a sequence. 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-124-3ad39bf87e7d> in <module>() 
----> 1 class_id.astype(int) 
ValueError: setting an array element with a sequence. 

我想獲得以下數組:

array([[1], 
    [2], 
    [1], 
    ..., 
    [1], 
    [1], 
    [1]]) 

我應該使用哪個函數?

+0

你能分享一下創建class_id數組的方法嗎? –

回答

1

您有一個陣列列表,您需要刪除一個圖層/維度以獲得您想要的輸出;你可以試試這個:

import numpy as np 
np.array([s[0].astype(int) for s in class_id]) 

#array([[2], 
#  [3], 
#  [2], 
#  [2], 
#  [2], 
#  [2]]) 

class_id = array([[array(['2'], 
    dtype='<U1')], 
    [array(['3'], 
    dtype='<U1')], 
    [array(['2'], 
    dtype='<U1')], 
    [array(['2'], 
    dtype='<U1')], 
    [array(['2'], 
    dtype='<U1')], 
    [array(['2'], 
    dtype='<U1')]], dtype=object) 
+0

謝謝@Psidom!有用 –

0

要重新創建陣列,我必須使用:

array = np.array 
In [460]: alist = [[array(['2'], 
    ...: dtype='<U1')], 
    ...: [array(['3'], 
    ...: dtype='<U1')], 
    ...: [array(['2'], 
    ...: dtype='<U1')], 
    ...: [array(['2'], 
    ...: dtype='<U1')], 
    ...: [array(['2'], 
    ...: dtype='<U1')], 
    ...: [array(['2'], 
    ...: dtype='<U1')]] 
In [461]: arr = np.zeros((6,1), dtype=object) 
In [462]: arr[:,0] = alist 
In [463]: arr 
Out[463]: 
array([[[array(['2'], 
     dtype='<U1')]], 
     [[array(['3'], 
     dtype='<U1')]], 
     [[array(['2'], 
     dtype='<U1')]], 
     [[array(['2'], 
     dtype='<U1')]], 
     [[array(['2'], 
     dtype='<U1')]], 
     [[array(['2'], 
     dtype='<U1')]]], dtype=object) 

簡單的複製ñ粘貼帶出內部數組的定義:

array([[['2']], # (6,1,1) shape 

     [['3']], 
     ... 
     [['2']]], dtype=object) 

刪除[]的一個級別爲arr[:,0],我可以連接陣列,並輕鬆地將U1陣列轉換爲int,然後調用astype

In [464]: np.concatenate(arr[:,0]) 
Out[464]: 
array([['2'], 
     ['3'], 
     ['2'], 
     ['2'], 
     ['2'], 
     ['2']], 
     dtype='<U1') 
In [465]: np.concatenate(arr[:,0]).astype(int) 
Out[465]: 
array([[2], 
     [3], 
     [2], 
     [2], 
     [2], 
     [2]])