2015-03-02 2 views
0

Я пытаюсь сегментировать вектор y с использованием ребер в cutoffs с использованием numpy (и только numpy). y и g определены как векторы столбцов, но a возвращается как вектор строки. Запуск g += a.transpose() генерирует ошибку соответствия формы (скопировано ниже), введя массив 100x100. Должен быть более элегантный способ сделать это. Благодарю.Назначение векторных значений сегментам в numpy

y = np.random.uniform(0,1,100) 
cutoffs = np.random.uniform(0,1,3) 
cutoffs.sort() 
g = np.zeros(y.size) 
for c in np.hstack([ cutoffs , 1. ]): 
    a = np.array([ y < c ]) 
    g += a.transpose() 


Traceback (most recent call last): 
    File "<stdin>", line 3, in <module> 
ValueError: non-broadcastable output operand with shape (100,) doesn't match the broadcast shape (100,100) 
+0

Что именно вы хотите достичь? ... относительно ошибки вам необходимо изменить код, как показано ниже ... – plonser

+0

Спасибо за ответ. Цель состоит в том, чтобы назначить сегменты «y», затем «сопоставить» функцию каждому из этих сегментов, аналогично «tapply()» в R. – user2105469

ответ

Смежные вопросы