Hi All,
as I didn't get any answer, I thought I might repost with some
more analysis the trouble I am having with interp2d.
The attached script produces 3 different results depending on the
value of the parameter numColumns, i.e.:
1) numColumns = 20
Traceback (most recent call last):
File "C:\MyProjects\LinearInterpolation.py", line 27, in <module>
function = interp2d(xx, yy, z, kind="linear")
File "C:\Python25\Lib\site-packages\scipy\interpolate\interpolate.py",
line 113, in __init__
self.tck = fitpack.bisplrep(self.x, self.y, self.z, kx=kx, ky=ky, s=0.)
File "C:\Python25\Lib\site-packages\scipy\interpolate\fitpack.py",
line 702, in bisplrep
tx,ty,nxest,nyest,wrk,lwrk1,lwrk2)
ValueError: Invalid inputs.
2) numColumns = 200
Traceback (most recent call last):
File "C:\MyProjects\LinearInterpolation.py", line 27, in <module>
function = interp2d(xx, yy, z, kind="linear")
File "C:\Python25\Lib\site-packages\scipy\interpolate\interpolate.py",
line 113, in __init__
self.tck = fitpack.bisplrep(self.x, self.y, self.z, kx=kx, ky=ky, s=0.)
File "C:\Python25\Lib\site-packages\scipy\interpolate\fitpack.py",
line 702, in bisplrep
tx,ty,nxest,nyest,wrk,lwrk1,lwrk2)
MemoryError
(MemoryError? With a 372x200 matrix???)
3) numColumns = 2000
Traceback (most recent call last):
File "C:\MyProjects\LinearInterpolation.py", line 27, in <module>
function = interp2d(xx, yy, z, kind="linear")
File "C:\Python25\Lib\site-packages\scipy\interpolate\interpolate.py",
line 113, in __init__
self.tck = fitpack.bisplrep(self.x, self.y, self.z, kx=kx, ky=ky, s=0.)
File "C:\Python25\Lib\site-packages\scipy\interpolate\fitpack.py",
line 702, in bisplrep
tx,ty,nxest,nyest,wrk,lwrk1,lwrk2)
OverflowError: long int too large to convert to int
Is there anyone who could tell me, please, what I am doing wrong? This
is on Windows XP 1GB RAM, 3.7 GHz, Python 2.5, scipy 0.6.0, numpy
1.0.4.
Thank you for your suggestions.
Andrea.
"Imagination Is The Only Weapon In The War Against Reality."
http://xoomer.alice.it/infinity77/
import datetime
import numpy
from scipy.interpolate import interp2d
date1, date2 = [], []
# Change numColumns from 20 to 200 to 2000
# to see different error messages
numColumns = 2000
for year in xrange(2007, 2038):
for month in xrange(1, 13):
date1.append(datetime.date(year, month, 1).toordinal())
date2.append(datetime.date(year, month, 5).toordinal())
timeSteps = len(date2)
x = [date1[0] for i in xrange(numColumns)]
y = date1
z = numpy.random.rand(timeSteps, numColumns)
xx, yy = numpy.meshgrid(x, y)
newX = [date2[0] for i in xrange(numColumns)]
newY = date2
function = interp2d(xx, yy, z, kind="linear")
newZ = function(newX, newY)
_______________________________________________
Numpy-discussion mailing list
[email protected]
http://projects.scipy.org/mailman/listinfo/numpy-discussion