我有一个数据集(X,Y) -> Z。因此,我想用Python学习2D输入和输出Z之间的映射。
我知道底层函数不是线性的,因此我不能应用线性回归。由于输入数据仅为2D,所以我想使用二元样条。我实现了以下示例:
import numpy
from scipy import interpolate
X = [1,2,1,2]
Y = [1,2,2,1]
Z = [1,2,1,2]
Y = numpy.array(Y)
X = numpy.array(X)
Z = numpy.array(Z)
tck = interpolate.bisplrep(X,Y,Z)#,kx=5,ky=2)
prin
我希望使用定义的函数将输入数据转换为网格数组,matplotlib可以使用网格数组。例如,使用更大的数据,请查看我的文件。数组看起来像:x = [0,1.0,2.0], y = [0.0,10.0,20.0], z = [0.0, 20.0, 50.0],意思是它们具有相同的长度,z应该是在x网格上绘制的。M4rtini给出了一个可能的解决方案:
from numpy import linspace, meshgrid
import numpy as np
from pprint import pprint
from scipy.interpolate import griddata
def
我的阴谋有问题。我想在一个图中绘制多个网格,每个网格都用标签标记。
这就是数据的样子:
我只能画一个网格。请帮帮忙。
这是我的代码(只有一个网格):
import numpy as np
import pandas as pd
import plotly.graph_objects as go
geob_data = pd.read_csv("Geobody.csv")
x = list(geob_data["X"])
y = list(geob_data["Y"])
z = list(geob_data["Z"])
我正在尝试使用Scipy的类来插值规则网格的数据。在某些网格点,输入数据包含无效的数据条目,这些条目被设置为NaN值。首先,我在二维插值上使用了的解决方案。使用我的数据,插值返回一个仅包含NaNs的数组。我还尝试了一种不同的方法,假设我的数据是非结构化的,并使用类。显然,我有太多的数据点无法使用非结构化插值,因为数据数组的形状是(719x2880)。
为了说明我的问题,我创建了以下脚本:
from __future__ import division
import numpy
import pylab
from scipy import interpolate
# The signal
我有一些numpy数组,其中包含了在2D网格上可视化的数据。有些数据是非物质的,我想掩盖这些数据。但是,我不知道如何正确地设置tricontour的掩码属性。我试过:
import matplotlib.pyplot as mp
import numpy as np
with open('some_data.dat', 'r') as infile:
x, y, z = np.loadtxt(infile, usecols=(0, 1, 2), unpack=True)
isbad = np.less(z, 1.4) | np.greater(
我有一组坐标点,我想映射到网格上。我已经生成了这样的网格:
import numpy as np
a = -4
b = 4
z = 50
x = np.linspace(a, b, z)
y = np.linspace(a, b, z)
X, Y = np.meshgrid(x, y)
我有一个粒子位置随时间变化的数组,我想把这些位置映射到网格上,以便可视化粒子位置的变化。我怎么能这么做?
下面的代码应该生成网格数据。但如果我选择作为插值类型‘立方’或‘线性’,我是得到南的z网格。温,我选的‘最近’一切都很好。下面是一个示例代码:
import numpy as np
from scipy.interpolate import griddata
x = np.array([0.03,0.05,0033])
y = np.array([0.004,0.01,0.02])
z = np.array([1,2,3])
xy = np.zeros((2,np.size(x)))
xy[0] = x
xy[1] = y
xy = xy.T
grid_x, grid_y = np.m
我正在努力寻找最有效的方法,将二维数组的一部分恢复到更精细的网格中。为了保持我的程序的通用性,我倾向于使用一个标准的包,比如numpy或scipy,但这可能超出了他们的能力。
预期的输入数据是一个geotiff (数字高程模型)文件,用GDAL导入,并转换为numpy数组。一个问题是,许多输入文件没有CRS信息。
在我的MWE下面和回归到一个2x2网格(为演示),这需要96s在我的本地机器。实际的精细网格要大得多,细网格将在一个循环中创建多次。我承认这个MWE可能是最不有效的方法来做到这一点!
import numpy as np
import scipy.interpolate as int
假设我有维数(x,y)的网格数据,值以z为单位。因此,我们可以通过以下方法绘制三维散点图:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.random(10)
y = np.random.random(10)
z = np.random.random(10)
plt.scatter(x, y, c = z, s=150, cmap = 'jet')
plt.show()
我现在想的是去掉每个圆形散点图的线条颜色。另外,我们能把它变成正方形吗?
我没有找到任何办法。您的帮助将不胜感激。
我想把x轴从100μm降到10μm,y轴也是这样。我试图设置轴限值,但希望在10x10网格上绘制相同的数据,即在100×100网格上绘制相同的数据,而不仅仅是“放大”。
这是原始代码:
import numpy as np
from astropy.modeling import models
import matplotlib.pyplot as plt
z = np.zeros((100, 100))
y, x = np.mgrid[0:100, 0:100]
for _ in range(10):
g2d = models.Gaussian2D(amplitude=100,
我有一些函数z(x,y),我想生成一个箭图(梯度的2D图)。如下所示:
为了做到这一点,我必须在线性网格上运行渐变,并将数据调整为matplotlib.quiver所做的格式。
一种天真的方法是在循环中向前和向后迭代:
for i in range(10):
for j in range(10):
x = torch.tensor(1. * i, requires_grad=True)
y = torch.tensor(1. * j, requires_grad=True)
z = x ** 2 + y ** 2
我试图遵循MATLAB的网格+插值的例子。示例代码可以找到。在该站点上,我将查看以下示例:示例--在Surface上显示非均匀数据。
现在,我想在Python (Numpy + Matplotlib)中生成一个类似于MATLAB中显示的类似的情节。这是MATLAB生成的图形:
我在用Python做这件事时遇到了麻烦。下面是我在Python2.7中的代码和输出:
from matplotlib.mlab import griddata
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
f
我想从VTK文件中提取一些数据(例如标量)及其在网格上的坐标,然后在Matplotlib中进行处理。问题是,我不知道如何从VTK文件中获取点/单元数据(例如,通过给出标量的名称),然后使用vtk_to_numpy将它们加载到一个numpy数组中。
我的代码应该如下所示:
import matplotlib.pyplot as plt
from scipy.interpolate import griddata
import numpy as np
from vtk import *
from vtk.util.numpy_support import vtk_to_numpy
# load