Tengo un archivo csv, que lo estoy convirtiendo en una matriz usando el siguiente comando:

reader = csv.reader(open("spambase_X.csv", "r"), delimiter=",")
x = list(reader)
result = numpy.array(x)
print(result.shape)   #outputs (57,4601)

Ahora quiero extraer la primera columna del resultado de la matriz, que estoy haciendo de la siguiente manera:

col1=(result[:, 1])

**print(col1.shape)        #outputs (57,)**

¿Por qué no se imprime como (57,1)? ¿Cómo puedo hacer eso?

Tia

1
hydra123 14 sep. 2018 a las 22:07

3 respuestas

La mejor respuesta

Puedes agregar []

result[:,[1]].shape
Out[284]: (2, 1)

Entrada de datos

result
Out[285]: 
array([[1, 2, 3],
       [1, 2, 3]])

Más información

result[:,[1]]
Out[286]: 
array([[2],
       [2]])
result[:,1]
Out[287]: array([2, 2])
1
YOBEN_S 14 sep. 2018 a las 19:11

col1 = result[:, 1] es una matriz 1D, por lo tanto, verá que tiene la forma (57, ).

Puede convertirlo en una matriz 2D con una sola columna haciendo:

col1[:, np.newaxis]   # shape: (57, 1)

Si desea una matriz 2D con una sola fila, puede hacer:

col1[np.newaxis, :]   # shape: (1, 57)
0
Francesco Montesano 14 sep. 2018 a las 19:15

Sí, devolverá la matriz de formas (57,). Si quieres ser como (57,1), puedes hacerlo reformando ().

col1=(result[:, 1]).reshape(-1,1)
2
Arshdeep Singh 14 sep. 2018 a las 19:17