标签: alglib

Python + alglib + NumPy:如何避免将数组转换为列表?

上下文: 我最近发现了alglib(用于数值计算),这似乎是我正在寻找的东西(鲁棒插值,数据分析......),并且无法真正找到numpy或scipy.

但是,我担心(例如插值)它不接受numpy数组作为有效的输入格式,而只接受常规的python列表对象.

问题: 我在代码和文档中挖了一些,发现(正如预期的那样)这个列表格式只是用于转换,因为库无论如何都会将它转换为ctypes(cpython库只是底层C的接口)/C++库).

这就是我关注的地方:在我的代码中,我正在使用numpy数组,因为它对我正在进行的科学计算有很大的性能提升.因此,我担心必须将传递给alglib例程的任何数据转换为列表(将转换为ctypes)将对性能产生巨大影响(我正在使用可能内部有数十万个浮点数的数组,以及数千个阵列).

问题: 你认为我确实会有性能损失,或者你认为我应该开始修改alglib代码(只有python接口)以便它可以接受numpy数组,并且只进行一次转换(从numpy数组到ctypes )?我甚至不知道这是否可行,因为它是一个相当大的图书馆...也许你们有更好的想法或建议(即使在相似但不同的图书馆)......


编辑

看来我的问题没有得到很多兴趣,或者我的问题不明确/相关.或者也许没有人有解决方案或建议,但我怀疑周围有这么多专家:)无论如何,我写了一个小的,快速和脏的测试代码来说明问题......

#!/usr/bin/env python

import xalglib as al
import timeit
import numpy as np

def func(x):
    return (3.14 *x**2.3 + x**3 -x**2.34 +x)/(1.+x)**2

def fa(x, y, val=3.14):
    s = al.spline1dbuildakima(x, y)
    return (al.spline1dcalc(s, val), func(val))

def fb(x, y, val=3.14):
    _x = list(x)
    _y = list(y)
    s = al.spline1dbuildakima(_x, _y)
    return (al.spline1dcalc(s, val), func(val))

ntot = 10000
maxi = 100
x = np.random.uniform(high=maxi, …
Run Code Online (Sandbox Code Playgroud)

c++ python performance numpy alglib

9
推荐指数
2
解决办法
1632
查看次数

如何从R中提取RandomForest以用于生产?

我有一个成功的随机森林模型,我想将它集成到另一个软件中,我知道我可以使用一些库(比如Java中的fastRF或ALGLIB的DecisionForest用于其他语言),但我如何使用R中训练的"模型"?我必须用新语言重新训练它吗?

另一种观点是以某种方式提取它,但我不知道该怎么做...

任何帮助将不胜感激

提前致谢

java r alglib random-forest

9
推荐指数
1
解决办法
4151
查看次数

如何使用alglib添加矩阵?

我已经知道如何使用 alglib 将两个矩阵相乘rmatrixgemm(请参阅此问题)。

有没有一种方法可以在不使用此函数的情况下计算两个矩阵的线性组合,并将其设置B为恒等式?效率不会很高。

Alglib 提供了大量复杂的算法,但我找不到这样的基本函数。

手册在这里

c++ matrix alglib

5
推荐指数
1
解决办法
1351
查看次数

4
推荐指数
1
解决办法
6137
查看次数

无法在C#中将dll文件添加到visual studio

我是C#编码的新手,我正在使用Microsoft Visual Studio 2012.我的问题是,当我从dll文件中添加引用时,它突出显示为"使用alglibnet2"导入的红色.我试图从Alglib添加对我的代码的引用来计算协方差矩阵covm().我确实把dll文件放在我的代码的lib文件夹中.任何帮助,将不胜感激.谢谢!

c# dll visual-studio alglib

2
推荐指数
1
解决办法
7150
查看次数

如何用alglib创建double的矩阵?

我需要用alglib创建一个矩阵因为我需要使用库中包含的函数,但是我需要我的矩阵包含double类型的元素(或类似于alglib中实现的double)我该怎么办?

如果不可能有人知道一个库,即使对于double类型的矩阵,它也会影响SVD函数?

我正在使用c ++.

谢谢

c++ matrix alglib

0
推荐指数
1
解决办法
4526
查看次数

标签 统计

alglib ×6

c++ ×3

c# ×2

matrix ×2

dll ×1

java ×1

numpy ×1

performance ×1

python ×1

r ×1

random-forest ×1

visual-studio ×1