Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 12, 2011 22:03:09

reseacher2011
От:
Зарегистрирован: 2011-08-08
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

оператор вызова функции для каждого элемента numpy массива

есть такой?

другими словами как заменить такой цикл одним оператором:

idx=ndarray(x.shape[0],dtype='bool')
for i in range(x.shape[0]):
idx[i]=isGoodElement(x[i],other_params)



Офлайн

#2 Авг. 12, 2011 22:14:54

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

оператор вызова функции для каждого элемента numpy массива

http://www.scipy.org/Numpy_Example_List_With_Doc#head-fbff061fdb843209707a8fa537d9b24b6a91245e
Если ваше условие тестирования не очень сложное то проще написать (как оно может быть сложным когда у вас bool!)
Както так:

idx=x>0



Отредактировано (Авг. 12, 2011 22:20:39)

Офлайн

#3 Авг. 12, 2011 22:32:49

reseacher2011
От:
Зарегистрирован: 2011-08-08
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

оператор вызова функции для каждого элемента numpy массива

doza_and
http://www.scipy.org/Numpy_Example_List_With_Doc#head-fbff061fdb843209707a8fa537d9b24b6a91245e
Если ваше условие тестирования не очень сложное то проще написать (как оно может быть сложным когда у вас bool!)
Както так:
idx=x>0
1. условие сложное и в матричном виде не выражается.

2. c vectorize возникла проблема: она other_paramets обрабатывает как элементы массива :-)



Офлайн

#4 Авг. 12, 2011 23:00:57

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

оператор вызова функции для каждого элемента numpy массива

Да, извините, не туда поглядел - думал на входе bool :)

np.vectorize(lambda v: isGoodElement(v,param1,param2,...),x)
Хм если так пойдет я может и сам научусь vectorize использовать.



Отредактировано (Авг. 12, 2011 23:01:49)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version