python - 在 Python/Numpy/Scipy 中查找两个数组之间的插值交集
问题描述
我正在寻找一种简单的方法来查找两个 Numpy 数组之间的插值交集。我知道如果我们有两个函数句柄而不是两个数组,这很容易实现,如使用Scipy 或使用 Sympy 的链接所示。我想做同样的事情,但给定两个数组,特别是在由线连接数组条目产生的线性样条之间。
例如,假设我们有两个数组,y_1
并且y_2
,都应该在 处求值xSupport
。
import numpy as np
xSupport = np.array([0,1])
y_1 = np.array([0,2])
y_2 = np.array([1,0])
我正在寻找返回的函数1/3
,它是这两条线交叉处的 x 值。在我的应用程序中,支持大于两个,因此我正在寻找一种独立于数组长度的方法。
解决方案
与 ser 的回答相同:
import numpy as np
x = np.array([0,1])
y1 = np.array([0,2])
y2 = np.array([1,0])
def solve(f,x):
s = np.sign(f)
z = np.where(s == 0)[0]
if z:
return z
else:
s = s[0:-1] + s[1:]
z = np.where(s == 0)[0]
return z
def interp(f,x,z):
m = (f[z+1] - f[z]) / (x[z+1] - x[z])
return x[z] - f[z]/m
f = y1-y2
z = solve(f,x)
ans = interp(f,x,z)
print(ans)
假设您找到零,然后对两个系列的差异执行函数,可以简化问题。首先,'solve' 找到符号转换发生的位置(意味着在其间某处出现零),然后 'interp' 执行线性插值以找到解决方案。
推荐阅读
- android - 为什么 RecyclerView 不断重复相同的项目?
- sql-execution-plan - 如何在 db2 Z/OS 中创建 PLAN_TABLE
- string - python字符串拆分“大约80k个字符的字符串”
- javascript - Javascript中的链式返回
- docker - Docker 编写两个简单的应用程序
- java - JsonObject 流处理空值
- swift - Swift按案例名称对枚举进行排序
- javascript - 如何从 Python CGI 脚本中返回一个值
- r - 使用 RpostgreSQL 在循环内更改 PostgreSQL 架构
- php - 如何在 unicode 字符串中找到相似的 unicode 文本?