Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python griddata scipy插值不工作(给出nan)_Python_Scipy_Interpolation - Fatal编程技术网

Python griddata scipy插值不工作(给出nan)

Python griddata scipy插值不工作(给出nan),python,scipy,interpolation,Python,Scipy,Interpolation,我正在试用scipy.interpolation.griddata帮助文件中给出的2d示例。 它适用于“最近”的插值。但它给出了一个用nan填充的矩阵,同时使用任何其他插值,如“线性”或“立方”。如果我给参数fill_value=5,它会给矩阵填充5 这是因为安装问题吗 我正在尝试他们在帮助文档中给出的完全相同的东西。 但不知何故,它给出的结果就像我要求插值的点位于输入点之外。(这不是!!我遵循了这个例子) 我将发布示例以重现错误(以文档形式) 我把grid_z1和grid_z2变成一个矩阵,里

我正在试用scipy.interpolation.griddata帮助文件中给出的2d示例。 它适用于“最近”的插值。但它给出了一个用nan填充的矩阵,同时使用任何其他插值,如“线性”或“立方”。如果我给参数fill_value=5,它会给矩阵填充5

这是因为安装问题吗

我正在尝试他们在帮助文档中给出的完全相同的东西。 但不知何故,它给出的结果就像我要求插值的点位于输入点之外。(这不是!!我遵循了这个例子)

我将发布示例以重现错误(以文档形式)

我把grid_z1和grid_z2变成一个矩阵,里面填充了nan

更新:我在另一台Ubuntu 11.10机器上安装了所有软件包。同样的剧本给出了完全正确的答案。以前我试过Porteus发行版(LiveSlackware系列)。因此,我认为我可以有把握地得出结论,这是我的安装中的一些问题。有人知道会出什么问题吗?库冲突是否会导致这种行为?因为我的主要机器是Portues,所以我别无选择,只能修复其中的scipy。

你说“填充了nan”,但它并没有真正填充。使用您的代码,但添加

np.random.seed(7)
一开始,我们使用的是同一个数据集,我发现

>>> np.isnan(grid_z1).sum()
744
>>> np.isnan(grid_z2).sum()
744
这些NAN都发生在外部的一个带上:

>>> np.isnan(grid_z1[5:-5,5:-5]).sum()
0
这就很可能是问题所在。给出NaN的点在指定点之外,因此它不知道如何处理它们。对于“最近”插值的特殊情况,您仍然可以找到附近的对象,因此不会得到任何NaN

所以当你说要插值的点不在输入点之外时,我不同意你的说法:

# brute force, because I'm too lazy
from collections import Counter
d = Counter()
for x, y, val in zip(grid_x.flat, grid_y.flat, grid_z1.flat):
    pg = (points >= [x, y])
    boxed = len(set(tuple(p) for p in pg)) == 4
    d[np.isnan(val), boxed] += 1
产生

>>> d
Counter({(False, True): 19189, (True, False): 744, (False, False): 67})

没有(真的,真的)案例。瞧,每个NaN在点中都缺少一个边界框。有一些(False,False)情况下,值没有边界框,但没有结束为NaN,这有点令人惊讶,但如果他们假设所有内容都包含在内,则可能取决于无聊的实现细节,如果没有,会发生什么。简短版本:我认为这里的一切可能都正常工作,正如预期的那样。

不清楚您是如何安装scipy的(或者您使用的是哪个版本-请尝试
$python-c“import scipy;print scipy.\uu version\uuuuuu”
),但是由于griddata依赖于编译的代码,您所看到的可能是由于构建问题或(不太可能)特定于您的平台的griddata错误造成的

我建议在
scipy用户
邮件列表中报告这一点,它比堆栈溢出更适合解决构建和安装问题

在发布到邮件列表之前,安装
nose
测试框架是值得的,这样您就可以运行

$ python -c "import scipy; scipy.test()"

并同时报告任何测试失败的详细信息。

我也有同样的问题,但我认为它已经在scipy 0.11rc2中得到了修复(并不是说我已经能够在我狂热的Python发行版顶部安装它来找出问题的答案……)?

你能提供你所指帮助文档的链接吗?@Hooked我指的是我们键入griddata时得到的帮助文档?在伊皮顿。(代码中的文档字符串本身)感谢您的帮助。但是我得到的矩阵完全是nan。当我尝试np.isnan(grid_z1).sum()时,我得到了20000。网格_z1的大小也是20000。我甚至试着用matplotlib.pyplot.imshow查看它。它完全是空的,带有nan。这很奇怪。你能把你的帖子编辑成最小的大小写(比如100、200和2000)完全是NaN吗?我改成了10x10的小矩阵。它仍然给我10x10矩阵填充nan。我在另一台机器上尝试了相同的脚本。它工作得很好,给出了正确的答案。我想修理我机器上的机器。由于它没有给出任何错误,我不知道从哪里开始。您认为是什么造成了这个问题?0.10.0b2是我的scipy版本。现在我正在运行scipy.test()。它给出了大量的不推荐、用户和运行时警告和NAN!!
$ python -c "import scipy; scipy.test()"