Может кто-нибудь узнать, что не так с кодом ниже?Получение индексов в numpy
import numpy as np
data = np.recfromcsv("data.txt", delimiter=" ", names=['name', 'types', 'value'])
indices = np.where((data.name == 'david') * data.types.startswith('height'))
mean_value = np.mean(data.value[indices])
Я хочу, чтобы вычислить среднее значение веса и роста для Давида и знака следующим образом:
david>> mean(weight_2005 and weight_2012), mean (height_2005 and height_2012)
mark>> mean(weight_2005 and weight_2012), mean (height_2005 and height_2012)
Из файла (data.txt) текст:
david weight_2005 50
david weight_2012 60
david height_2005 150
david height_2012 160
mark weight_2005 90
mark weight_2012 85
mark height_2005 160
mark height_2012 170
Я использую python 3.2 и numpy 1.8
Приведенный выше код обеспечивает ошибку типа следующим образом:
TypeError: startswith first arg must be bytes or a tuple of bytes, not numpy.str_
Код наверх работает для меня. 'mean_value' -' 155.0', с python 2, numpy 1.7 – askewchan
@askewchan, которым вы пользуетесь verson python и numpy? – 2964502
Я могу воспроизвести сообщение об ошибке в python 3.3 и 'numpy' 1.9.0.dev-8a2728c. Работает ли 'data.types.astype (str) .startswith (" height ")'? (Если это так, мы должны, вероятно, выяснить, что подходит для идиомы для декодирования.) – DSM