2014-01-04 3 views
1

я получаю следующее сообщение об ошибке во время изменения формы Numpy ndarrayNumPy: TypeError: перекроить() получил неожиданный аргумент ключевое слово «порядок»

DeprecationWarning: :func:`reshape` is deprecated, use :func:`numerix.reshape()<numpy.reshape>` instead! 
return reshape(newshape, order=order) 
Traceback (most recent call last): 
File "./render2.py", line 374, in <module> 
,u=np.reshape(voltage.grad[0], (ny, nx)) 
File "/home/jana/Builds/lib/python2.6/site-packages/numpy/core/fromnumeric.py", line 172, in reshape 
return reshape(newshape, order=order) 
File "/home/jana/Builds/lib/python2.6/site-packages/fipy/tools/decorators.py", line 151, in newfunc 
return func(*args, **kwds) 
TypeError: reshape() got an unexpected keyword argument 'order' 

Ниже часть кода, который дает эту ошибку. Примечание. Plot.py - это пользовательский модуль.

plot.streamlinePlot(x = x 
        ,y = y 
        ,u=np.reshape(voltage.grad[0], (ny, nx)) 
        ,v=np.reshape(voltage.grad[1], (ny, nx)) 
        ,filename='Analysis/electricFieldStreamPlot_%s.png' 
        ,show=False 
        ,clear=True) 

Выход

print "Voltage shape =", voltage.shape 
print "Voltage.grad[0] shape =", voltage.grad[0].shape 
print "ny times nx =", ny*nx 

является

Voltage shape = (269700,) 
Voltage.grad[0] shape = (269700,) 
ny times nx = 269700 

Я бегу FiPy 3.0 и NumPy 1.7.2. Любые подсказки? Благодаря!

+1

, пожалуйста, напишите код, в котором вы были запущены (достаточно, чтобы воспроизвести ошибку) и версии numpy и fipy – MattDMo

+0

Спасибо @MattDMo, я отредактировал мое сообщение. – gora

+1

Кажется, это может быть ошибка в fipy. Можете ли вы запустить 'np.reshape (напряжение.grad [0], (ny, nx)' без импорта сначала fipy? – jorgeca

ответ

1

Вы должны получить желаемый результат, вызвав

from fipy import numerix as nx 
nx.reshape(voltage.grad[0], (ny, nx)) 

FiPy отменяет ряд NumPy подпрограмм для работы со своими собственными структурами данных в непротиворечивым образом. Вы всегда должны использовать fipy.numerix вместо numpy при работе с объектами FiPy.

Если вы не знаете, FiPY теперь включает в себя MatplotlibStreamViewer, который может обслуживать ваши потребности или, по крайней мере, показывать вам операции с данными, которые необходимо выполнить для вашего собственного дисплея.

В взаимодействии между numpy.reshape(), fipy.numerix.reshape() и fipy.CellVariable.reshape() существует определенная ошибка. Я зарегистрировал a ticket, чтобы посмотреть на это. Спасибо, что подняли вопрос.

+0

Привет, Спасибо за ответ. Однако я получаю ошибку: 'u = nx.reshape (напряжение. grad [0], (ny, nx)) AttributeError: объект 'int' не имеет атрибута 'reshape'' – gora

+0

Попробуйте 'u = nx.reshape (voltage.grad [..., 0], (ny, nx)) '. Измерение должно быть последним индексом, а не первым индексом. – jeguyer

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