Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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
分散数据的2D集成(python)_Python_Integration - Fatal编程技术网

分散数据的2D集成(python)

分散数据的2D集成(python),python,integration,Python,Integration,我有一些沿X和Y的散乱数据,值为A。我想在X和Y上积分A。但是,我的数据不在笛卡尔网格上(数据点之间的X,Y间距变化很大),数据点占据的X,Y域是一个复杂的形状(确切区域未知) 有没有一种简单的方法来整合这些数据?我已经做了以下工作: 对域进行三角剖分 计算每个三角形的积分 求三角形上的积分之和(由于积分的可加性,可以这样做) 假设我们有以下数据: import numpy as np X = np.array([0, 0, 1, 1, 1.5]) Y = np.array([0, 1.1,

我有一些沿X和Y的散乱数据,值为A。我想在X和Y上积分A。但是,我的数据不在笛卡尔网格上(数据点之间的X,Y间距变化很大),数据点占据的X,Y域是一个复杂的形状(确切区域未知)


有没有一种简单的方法来整合这些数据?

我已经做了以下工作:

  • 对域进行三角剖分
  • 计算每个三角形的积分
  • 求三角形上的积分之和(由于积分的可加性,可以这样做)
假设我们有以下数据:

import numpy as np
X = np.array([0, 0, 1, 1, 1.5])
Y = np.array([0, 1.1, 0, 1, 1.3])
A = np.array([2, 1.1, 0.5, 2, 0.3])
我们使用
scipy
进行三角测量:

from scipy.spatial import Delaunay
domain_points = np.array(list(zip(X,Y)))
tri = Delaunay(domain_points)

我们计算积分:

def area_from_3_points(x, y, z):
    return np.sqrt(np.sum(np.cross(x-y, x-z), axis=-1)**2)/2
integral = 0
for vertices in tri.simplices:
    mean_value = (A[vertices[0]] + A[vertices[1]] + A[vertices[2]]) / 3
    area = area_from_3_points(domain_points[vertices[0]], domain_points[vertices[1]], domain_points[vertices[2]])
    integral += mean_value*area
print(integral)

Out: 2.1166666666666667

你指的是什么类型的集成,网格/网格上的某种离散集成?@FallenApart是的,离散集成会很好。你能谈谈数据的格式吗?它是一个单numpy数组吗?@FallenApart我有三个1D数组(用于X、Y和a)。数据点i为(arrayX[i],arrayY[i],arrayA[i])。数据来自CDF网格,但我无法访问数据点之间的连接