2013-10-26 3 views
4

Я пытаюсь сделать некоторые математические вычисления в соответствии со значениями в частности индекса массива NumPy со следующим кодомTypeError: объект «NoneType» не поддерживает назначение пункт

X = np.arange(9).reshape(3,3) 
temp = X.copy().fill(5.446361E-01) 
ind = np.where(X < 4.0) 
temp[ind] = 0.5*X[ind]**2 - 1.0 
ind = np.where(X >= 4.0 and X < 9.0) 
temp[ind] = (5.699327E-1*(X[ind]-1)**4)/(X[ind]**4) 
print temp 

Но я получаю следующее ошибка

Traceback (most recent call last): 
File "test.py", line 7, in <module> 
temp[ind] = 0.5*X[ind]**2 - 1.0 
TypeError: 'NoneType' object does not support item assignment 

Не могли бы вы помочь мне в решении этой проблемы? Thanks

ответ

2

fill ничего не возвращает.

>>> import numpy as np 
>>> X = np.arange(9).reshape(3,3) 
>>> temp = X.copy() 
>>> return_value_of_fill = temp.fill(5.446361E-01) 
>>> return_value_of_fill is None 
True 

Заменить следующие строки:

temp = X.copy().fill(5.446361E-01) 

с:

temp = X.copy() 
temp.fill(5.446361E-01) 
+0

теперь он показывает следующее сообщение об ошибке - ValueError: Значение истинности массива более чем с одним элементом является неоднозначным , Используйте a.any() или a.all() –

+0

@RSJohn, замените 'ind = np.where (X> = 4.0 и X <9.0)' с 'ind = np.where ((X> = 4.0) & (X <9.0)) ' – falsetru

+0

спасибо .... Теперь это работает .... –

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