2017-02-08 122 views
1

我是Python中的新成員,我的問題涉及獲取矩陣中的特定元素並使用這些元素創建一個新矩陣。這是我的嘗試。訪問Matrix中的特定元素

import numpy as np 

a = [[ 1, 2, 3, 4, 5], 
[ 6, 7, 8, 9, 10], 
[ 11, 12, 13, 14, 15], 
[ 16, 17, 18, 19, 20], 
[ 21, 22, 23, 24, 25]] 

b = np.array(a) 

我想只得到這個矩陣的第一和第三列,然後結合它們來創建一個新的矩陣。我嘗試添加下面這段代碼:

newList = [] 

for i in range(len(b-1)): 
    newList.append(b[i,0])+ newList.append(b[i,2]) 

但我得到了下面的錯誤,而不是:

類型錯誤:不支持的操作數類型(S)爲+: 'NoneType' 和 'NoneType'

+0

如果你想B'的'對角線元素,你應該使用'b.diagonal()'。 – Evert

+0

參見['numpy.nditer'](https://docs.scipy.org/doc/numpy/reference/generated/numpy.nditer.html) – Evert

+0

嗨@Evert,這只是一個例子。我其實對獲取矩陣的特定列感興趣。例如,我有一個5×5的矩陣,但我只想使用第一和第三列,然後將它組合成一個新的矩陣。 –

回答

0

你可以您使用diagonal()您最初的問題:

import numpy as np 

a = np.matrix([[1 , 2 , 3 , 4 , 5 ], 
       [6 , 7 , 8 , 9 , 10], 
       [11, 12, 13, 14, 15], 
       [16, 17, 18, 19, 20], 
       [21, 22, 23, 24, 25]]) 

print(a.diagonal()) 

輸出:

[[ 1 7 13 19 25]] 

至於在評論你的問題,你可以結合第一和​​第三列,像這樣:

first_column = (a[:,0]) 
third_column = (a[:,2]) 

print(first_column + third_column) 

輸出:

[[ 4] 
[14] 
[24] 
[34] 
[44]] 

既然你現在要一排簡單的調用transpose()

print((first_column + third_column).transpose()) 

輸出:

[[ 4 14 24 34 44]] 
+0

對不起。這是我的預期輸出[[1,3] [6,8] [11,13] [16,18] [21,23]]。 –

+0

你去那裏:)考慮看numpy文檔,它很容易理解:) – shash678