Numpy получить столбец двумерной матрицы в виде массива - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть матрица, которая выглядит так:

>> X
>> 
[[5.1 1.4]
 [4.9 1.4]
 [4.7 1.3]
 [4.6 1.5]
 [5.  1.4]]

Я хочу получить первый столбец в виде массива [5.1, 4.9, 4.7, 4.6, 5.] Однако, когда я пытаюсь получить его по X[:,0], я получаю

>> [[5.1]
   [4.9]
   [4.7]
   [4.6]
   [5. ]]

что-то другое. Как получить его в виде массива?

Ответы [ 4 ]

0 голосов
/ 01 февраля 2020

С обычным numpy массивом:

In [3]: x = np.arange(15).reshape(5,3)                                                                                             
In [4]: x                                                                                                                          
Out[4]: 
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11],
       [12, 13, 14]])
In [5]: x[:,0]                                                                                                                     
Out[5]: array([ 0,  3,  6,  9, 12])

С np.matrix (использовать не рекомендуется, если на самом деле не рекомендуется)

In [6]: X = np.matrix(x)                                                                                                           
In [7]: X                                                                                                                          
Out[7]: 
matrix([[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8],
        [ 9, 10, 11],
        [12, 13, 14]])
In [8]: print(X)                                                                                                                   
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]]
In [9]: X[:,0]                                                                                                                     
Out[9]: 
matrix([[ 0],
        [ 3],
        [ 6],
        [ 9],
        [12]])
In [10]: X[:,0].T                                                                                                                  
Out[10]: matrix([[ 0,  3,  6,  9, 12]])

Чтобы получить массив 1d, конвертируйте в массив и ravel или за один шаг:

In [11]: X[:,0].A1                                                                                                                 
Out[11]: array([ 0,  3,  6,  9, 12])
0 голосов
/ 01 февраля 2020

Вы можете использовать список пониманий для такого рода вещей ..

import numpy as np

X = np.array([[5.1, 1.4], [4.9, 1.4], [4.7, 1.3], [4.6, 1.5], [5.0,  1.4]])
X_0 = [i for i in X[:,0]]
print(X_0)

Выход ..

[5.1, 4.9, 4.7, 4.6, 5.0]
0 голосов
/ 01 февраля 2020

Почти там! Просто reshape ваш результат:

X[:,0].reshape(1,-1)

Выходы:

[[5.1 4.9 4.7 4.6 5. ]]

Полный код :

import numpy as np

X=np.array([[5.1 ,1.4],[4.9 ,1.4], [4.7 ,1.3], [4.6 ,1.5], [5. , 1.4]])
print(X)
print(X[:,0].reshape(1,-1))
0 голосов
/ 01 февраля 2020

Это работает для вас?

X=[[5.1 ,1.4],[4.9 ,1.4], [4.7 ,1.3], [4.6 ,1.5], [5. , 1.4]]

column = [];        # empty list
for row in X:
  column.append(row[0])

print (column)

Выход

[5.1, 4.9, 4.7, 4.6, 5.0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...