2016-11-17 3 views
0
In[2]: from numpy import * 
In[3]: alpha = lambda x: piecewise(x,[x <= 4, 4 < x <= 24, x > 24], [10, 20, 50]) 
In[4]: print(alpha(5)) 
0 
In[5]: print(alpha(3)) 
10 
In[6]: print(alpha(26)) 
0 

Почему это не работает? есть 3 условия и 3 функцииNumpy.piecewise не работает по назначению

+1

Пожалуйста, дайте нам предполагаемое поведение. Ваш код работает. – YoYoYonnY

+0

Позвольте мне перефразировать себя, ваш код не работает _not_. Используйте 'alpha (array ([5]))'. Первый аргумент кусочка - это ['ndarray'] (https://docs.scipy.org/doc/numpy/reference/generated/numpy.piecewise.html) – YoYoYonnY

+0

У меня есть класс, который может принимать переменные как f (т). я хотел бы использовать кусочно вместо создания функции f (t) с операторами if и elif. Мне нужно иметь возможность отправлять одиночные значения и возвращать соответствующее значение. –

ответ

1

Найдено, что выбор делает то, что я хочу его

In[2]: from numpy import * 
In[3]: alpha = lambda x: select([x <= 4, (4 < x) & (x <= 24), x > 24], [10, 20, 50]) 
In[4]: print(alpha(5)) 
20 
In[5]: print(alpha(3)) 
10 
In[6]: print(alpha(26)) 
50 
+0

Кроме того: 'from numpy import *' - плохая идея - он создает тени как 'any' и' all' с версиями, которые ведут себя по-разному. – DSM

+0

Что вы подразумеваете под этим? –

+0

@Alexandermathers Импорт модуля в глобальное пространство имен может «затенять» существующие функции, тем самым делая их недоступными. Если я создаю модуль 'def print(): pass' и импортирую его по всему миру,' print (":("); 'больше не печатает ничего в' stdout'. – YoYoYonnY

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