Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

Como imprimir apenas a primeira coluna de um dataset com o numpy?

Como imprimir apenas a primeira coluna de um dataset com o numpy?

Meu código:

import numpy as np

data = np.genfromtxt("iris.data",delimiter = ",",usecols=(0,1,2,3))
print(data)

Meu dataset (parte dele):

5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa
5.4,3.9,1.7,0.4,Iris-setosa
4.6,3.4,1.4,0.3,Iris-setosa
5.0,3.4,1.5,0.2,Iris-setosa
4.4,2.9,1.4,0.2,Iris-setosa
4.9,3.1,1.5,0.1,Iris-setosa
5.4,3.7,1.5,0.2,Iris-setosa
4.8,3.4,1.6,0.2,Iris-setosa
4.8,3.0,1.4,0.1,Iris-setosa
4.3,3.0,1.1,0.1,Iris-setosa
5.8,4.0,1.2,0.2,Iris-setosa
5.7,4.4,1.5,0.4,Iris-setosa
5.4,3.9,1.3,0.4,Iris-setosa
5.1,3.5,1.4,0.3,Iris-setosa
5.7,3.8,1.7,0.3,Iris-setosa
5.1,3.8,1.5,0.3,Iris-setosa
5.4,3.4,1.7,0.2,Iris-setosa
5.1,3.7,1.5,0.4,Iris-setosa
4.6,3.6,1.0,0.2,Iris-setosa
5.1,3.3,1.7,0.5,Iris-setosa
4.8,3.4,1.9,0.2,Iris-setosa
5.0,3.0,1.6,0.2,Iris-setosa
5.0,3.4,1.6,0.4,Iris-setosa
5.2,3.5,1.5,0.2,Iris-setosa
5.2,3.4,1.4,0.2,Iris-setosa
4.7,3.2,1.6,0.2,Iris-setosa
4.8,3.1,1.6,0.2,Iris-setosa
5.4,3.4,1.5,0.4,Iris-setosa
5.2,4.1,1.5,0.1,Iris-setosa
5.5,4.2,1.4,0.2,Iris-setosa
4.9,3.1,1.5,0.1,Iris-setosa
5.0,3.2,1.2,0.2,Iris-setosa
5.5,3.5,1.3,0.2,Iris-setosa
4.9,3.1,1.5,0.1,Iris-setosa
4.4,3.0,1.3,0.2,Iris-setosa
5.1,3.4,1.5,0.2,Iris-setosa
5.0,3.5,1.3,0.3,Iris-setosa
4.5,2.3,1.3,0.3,Iris-setosa
4.4,3.2,1.3,0.2,Iris-setosa

Gostaria de pegar apenas a primeira coluna do dataset inteiro. Como fazer com o numpy?

10 respostas

Tenta assim:

data.index(1)

@Marcos Gonçalves dos Santos:

Com data.index(1):

AttributeError: 'numpy.ndarray' object has no attribute 'index'

Edson, slicing e indexação normais não funciona?

print(data[0])

@Yan Orestes:

print(data[0])

imprimiu:

[5.1 3.5 1.4 0.2]

Como seria o slice?

Eu gostaria de imprimir a primeira coluna do dataset inteira. Algo como:

[5.1 4.9 4.7 4.6 5.  5.4 4.6 5.  4.4 4.9 5.4 4.8 4.8 4.3 5.8 5.7 5.4 5.1
 5.7 5.1 5.4 5.1 4.6 5.1 4.8 5.  5.  5.2 5.2 4.7 4.8 5.4 5.2 5.5 4.9 5.
 5.5 4.9 4.4 5.1 5.  4.5 4.4 5.  5.1 4.8 5.1 4.6 5.3 5. ]

Ahh, me desculpe, me confundi! Você quer a primeira coluna de todas as linhas, não a primeira linha, certo?

Sinceramente, não sei se o numpy dá um auxílio para isso propriamente, mas a princípio creio que não. O jeito é fazer um loop for por todas as linhas da array e dentro desse loop imprimir apenas a primeira coluna. Algo mais ou menos assim:

for linha in data:
    print linha[0]

Isso implica que cada linha é uma lista. É isso mesmo?

O código que funcionou foi :

print(f"As 50 primeiras: \n{data[:50,0]}")

Mas, sinceramente, não entendi o slice...

Edson, sua dúvida é sobre o que significa esse termo? Ou sobre o que foi feito no código que você mandou?

@Yan Orestes:

Não entendi o :

data[:50,0]

Poderia, por favor, explicar?

solução!

O : no começo indica que você quer pegar os valores do começo. O 50 que os valores devem ir até a posição 50. O ,0 significa que você está pegando a coluna 0 (ou seja, a primeira) dessas linhas.

@Yan Orestes: Obrigado!