2017-08-05 92 views
-6

比方說,我有以下陣列 -從numpy的陣列卸下支架

X = np.array([[0, 1,5], [3, 7,6], [11,3,2]]) 

然後我做 -

X[1,np.delete(range(3),0)] 

其中給出 -

array([7, 6]) 

基本上,我會喜歡留下 -

7, 6 

如果可能,用浮點形式(不是字符串)以逗號分隔?

謝謝!

+1

'float form(not string)'是什麼意思?你想要一個兩個浮動列表?因爲打印看起來像'[7.0,6.0]'。那是你要的嗎? –

+1

您將得到與您的數據結構實際表示混淆的數據結構的字符串表示形式。如果你想用你的數據做數學,你擁有的數組是沒有問題的。如果你想在屏幕或文件上打印'7,6',可以使用各種陣列打印和字符串操作工具。 – user2357112

+0

你需要認識的一件事是你的數組有**沒有括號**和**沒有逗號**。它的'repr'表示有括號和逗號。如果要打印數組中不同的字符串表示形式,則需要更改打印邏輯,而不是陣列。 – user2357112

回答

1

只是儘量將其轉換爲一個列表:

>>> X[1,np.delete(range(3),0)].tolist() 
[7, 6] 
0

你開始用一個二維數組,並選擇部分。結果是1d陣列:

In [83]: X = np.array([[0, 1,5], [3, 7,6], [11,3,2]]) 
In [84]: X 
Out[84]: 
array([[ 0, 1, 5], 
     [ 3, 7, 6], 
     [11, 3, 2]]) 
In [85]: y = X[1,1:] 
In [86]: y 
Out[86]: array([7, 6]) 

可以以各種方式顯示。顯示的默認數組str使用括號且不包含逗號。該repr顯示包括array

In [87]: str(y) 
Out[87]: '[7 6]' 

列表顯示仍然有括號:

In [88]: y.tolist() 
Out[88]: [7, 6] 
In [98]: tuple(y) 
Out[98]: (7, 6) 

我不知道,顯示由逗號和沒有某種形式的括號分隔的數字任何內置結構。

但如果你將每個元素轉換成字符串,並與,加入他們的行列,你得到你想要的純字符串:

In [89]: ', '.join([str(i) for i in y]) 
Out[89]: '7, 6' 

我們也可以用%格式格式化陣列。這是np.savetxt在將數組的行寫入文件時執行的操作。

In [91]: '%d, %d'%tuple(y) 
Out[91]: '7, 6' 
In [97]: '{}, {}'.format(*y) 
Out[97]: '7, 6' 

標的所有這一切都是兩件事情:

  • 什麼是對象 - 數組,列表,元組,字符串

  • 怎麼樣了正在顯示的對象。所有對象都有一個str方法和一個repr顯示方法。但總是,對象和顯示方法之間存在區別。不要把一個誤認爲另一個。