2017-08-04 83 views
-1

有誰知道如何刪除這個列表中的逗號?如何刪除列表元素之間的逗號?

[4.1755139724695871, -2.6367224815727237, 2.3407722739111092, 0.36546242292367692] 

它是這樣的:

[ 4.17551397 -2.63672248 2.34077227 0.36546242] 

我用這個代碼:

import numpy as np 
def ontbinding(A, x): 
    N, N = A.shape 
    e = np.linalg.eig(A) 
    eigenvector = e[1] 
    return [np.dot(x.T,(eigenvector[:,i]).T)[0] for i in range(N)] 

,並給出以下數組和列表。

A = np.array([[ 0., 0., 5., -2.], 
[ 0., -4., 7., 4.], 
[ 5., 7., 18., 3.], 
[ -2., 4., 3., 0.]]) 
x = np.array([[1.], [2.], [3.], [4.]]) 
+1

你究竟要計算什麼,因爲我不明白你在給定的代碼中做了什麼錯誤? – itseva

+0

頂部的示例輸出似乎是數組的默認字符串表示形式。要更改表示形式,編寫自己的ToString函數可能是最快的。 – Erwin

+2

逗號是打印表示的一部分,不是實際數據結構的一部分。您的數據結構中沒有逗號。如果您不想打印逗號,則需要更改打印數據的方式,而不是如何存儲數據。 – user2357112

回答

1

此代碼必須給你正確的答案。

import numpy as np 
    def ontbinding(A, x): 
     N, N = A.shape 
     e = np.linalg.eig(A) 
     eigenvector = e[1] 
     return np.array([np.dot(x.T,(eigenvector[:,i]).T)[0] for i in range(N)]) 

請記住,當您使用理解時,您將自動收到一個列表。當你想把這個列表變成一個數組時,只需使用:

np.array(list) 
0

列表本身,沒有逗號。這只是將插入逗號作爲默認輸出渲染的打印圖像(由str__repr__生成)。你可以用這樣一個對象做什麼,就是明確地製作圖像,刪除逗號並打印出來。

list_str = str(list).replace(',', '') 
print list_str 

這就是你需要的嗎?

2

您將Ax定義爲數組;他們的打印表示沒有逗號。你的輸入是以列表的形式出現的,它需要逗號。

In [39]: A 
Out[39]: 
array([[ 0., 0., 5., -2.], 
     [ 0., -4., 7., 4.], 
     [ 5., 7., 18., 3.], 
     [ -2., 4., 3., 0.]]) 
In [40]: x 
Out[40]: 
array([[ 1.], 
     [ 2.], 
     [ 3.], 
     [ 4.]]) 
In [41]: print(A) 
[[ 0. 0. 5. -2.] 
[ 0. -4. 7. 4.] 
[ 5. 7. 18. 3.] 
[ -2. 4. 3. 0.]] 
In [42]: print(x) 
[[ 1.] 
[ 2.] 
[ 3.] 
[ 4.]] 

您的函數返回一個列表,列表理解的結果[... for i in range(N)]

In [44]: y = ontbinding(A,x) 
In [45]: y 
Out[45]: 
[4.1755139724695871, 
-2.6367224815727233, 
2.3407722739111088, 
0.36546242292367614] 

你可以把它轉換成一個數組:

In [46]: np.array(y) 
Out[46]: array([ 4.17551397, -2.63672248, 2.34077227, 0.36546242]) 
In [47]: print(np.array(y)) 
[ 4.17551397 -2.63672248 2.34077227 0.36546242] 
+0

這應該被認爲是更好的答案。 – itseva