Pelo que pude ver tem uma galera que parece estar ignorando o fato da primeira coluna ser texto, copiei alguns códigos das soluções apresentadas e deu erro...
Eu cheguei na seguinte soluçao, sem necessariamente ter que retirar a coluna de texto e ignorando a dica de qual linha uma determinada fruta começa e outra termina. Porque no dia a dia não funciona exatamente assim.
Entao fica a dica de como filtrar os dados através de uma coluna descritiva dentro do objeto do numpy
Primeiro na loadtext adicione o dtype=object, essa forma você não receberá nenhum erro por estar carregando texto
Depois, fiz essa etapa em duas partes:
A primeira pego a info de peso com o descritivo da fruta e depois a mesma coisa com diametro.
Depois eu separo o peso e diametro de cada fruta fazendo uma seleção pela primeira coluna do array
A sacada final é que como passado o dtype como object no inicio se tentarmos plotar um grafico vai ficar todo zuado, com isso na chamada da função plot, passamos apenas a coluna dos dados que queremos já fazendo o cast para float.
import numpy as np
import matplotlib.pyplot as plt
#c:\Users\leodo\OneDrive\Documentos\python_portfolio\ALURA_PYT_DSC\
url = 'https://raw.githubusercontent.com/allanspadini/numpy/dados/citrus.csv'
dado = np.loadtxt(url, delimiter=',',skiprows=1,dtype=object)
diametro = dado[:,:2]
peso = dado[:,[0,2]]
peso_laranja = peso[peso[:,0] =='orange']
peso_toranja = peso[peso[:,0] =='grapefruit']
diametro_laranja = diametro[diametro[:,0] =='orange']
diametro_toranja = diametro[diametro[:,0] =='grapefruit']
plt.plot(diametro_laranja[:,1].astype(float),peso_laranja[:,1].astype(float))
plt.plot(diametro_toranja[:,1].astype(float),peso_toranja[:,1].astype(float))
plt.show()