1

重塑 numpy ndarray 时出现以下错误

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。有什么线索吗?谢谢!

4

1 回答 1

1

您应该通过调用获得所需的结果

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

FiPy 覆盖了许多 NumPy 例程,以便以自洽的方式处理自己的数据结构。使用 FiPy 对象时,您应该始终使用 fipy.numerix 而不是 numpy。

如果您不知道,FiPY 现在包含一个MatplotlibStreamViewer,它可以满足您的需求,或者至少向您展示您需要为自己的显示器执行的数据操作。

numpy.reshape()、fipy.numerix.reshape() 和 fipy.CellVariable.reshape() 之间的交互肯定有问题。我已经提交了一张票来调查这个。感谢您提出问题。

于 2014-01-27T23:27:57.803 回答