# ) * sin(Y*2*pi*3) * a = numpy.exp(-0.5 * (((X - 0.3) / 0.2)**2 + ((Y - 0) / 0.2)**2 * 0 + ( (Z - 0.6) / 0.3)**2)) * (sin(Y * 2 * pi * 3) + 1) print a.shape, a.min(), a.max() xv = numpy.linspace(0, 1, 33) yv = numpy.linspace(0, 1, 33) zv = numpy.linspace(0, 1, 33) print 'evaluating' values = [] for xi in xv: yvalues = [] for yi in yv: zvalues = [] for zi in zv: v = interpn(x, y, z, a, xi, zi, yi) #z = numpy.exp(-0.5 * (((xi-0.3)/0.2)**2 + ((yi-0.6)/0.3)**2)) zvalues.append(v) yvalues.append(zvalues) values.append(yvalues) values = numpy.array(values) print 'plotting' import matplotlib.pyplot as plt def imshow(arr, title): plt.title(title) plt.imshow( arr, extent=(0, 1, 1, 0), vmin=0, vmax=a.max(), interpolation='none') plt.colorbar()
for y in [0, 1, 0.5]: print x, y, interpn([0,1], [0,1], [[1, 2], [3, 4]], x, y, method='linear') if __name__ == '__main__': numpy.random.seed(0) limits = [(-10,10), (-3,3)] breaks = [numpy.array([lo] + sorted(numpy.random.uniform(lo,hi, size=50)) + [hi]) for lo,hi in limits] npoints = numpy.product([len(b) for b in breaks]) inputvalues = [] values = [] for x in breaks[0]: vx = [] for y in breaks[1]: z = numpy.random.normal(0, 1)**2. z = numpy.exp(-0.5 * ((x - -3)**2 + (y - 1)**2.)) inputvalues.append([x, y, z]) vx.append(z) values.append(vx) outputvalues = [] for i in range(1000): x = [numpy.random.uniform(lo, hi) for lo,hi in limits] z = interpn(*(breaks + [values] + x), method='linear') outputvalues.append(x + [z]) numpy.savetxt("interpn_test_input.txt", inputvalues) numpy.savetxt("interpn_test_output.txt", outputvalues)
def test_interpn_grid(): for x in [0, 1, 0.5]: for y in [0, 1, 0.5]: print x, y, interpn([0,1], [0,1], [[1, 2], [3, 4]], x, y, method='linear')
for j in range(1, len(z)): if j0 - j >= 0: a[:, j0 - j, :] = a[:, j0 - j + 1, :] * 0.9 if j0 + j < len(z): a[:, j0 + j, :] = a[:, j0 + j - 1, :] * 0.9 del j xv = numpy.linspace(0, 1, 33) yv = numpy.linspace(0, 1, 33) zv = numpy.linspace(0, 1, 33) #xi = numpy.array([0.5, 0.3]).transpose() xi = 0.5 yi = xi zi = xi print interpn(x, y, z, a, xi, zi, yi) print 'evaluating' values = [] for xi in xv: yvalues = [] for yi in yv: zvalues = [] for zi in zv: v = interpn(x, y, z, a, xi, zi, yi) #z = numpy.exp(-0.5 * (((xi-0.3)/0.2)**2 + ((yi-0.6)/0.3)**2)) zvalues.append(v) yvalues.append(zvalues) values.append(yvalues) values = numpy.array(values) print 'plotting'