khiva的python绑定
khiva的Python项目详细描述
这是连接python编程语言的khiva绑定 以及KHIVA C++库。
许可证
本项目的许可 MPL-v2。
安装khiva
首先,应安装KHIVA C++库:然后,使用pip:
安装托管在python包索引(pypi)上的编译后的khiva包。pip install khiva
潜入
使用以下示例快速跳入khiva: 首先,设置要使用的后端和设备。默认情况下,有一个后端和一个设备集:
fromkhiva.libraryimport*set_backend(KHIVABackend.KHIVA_BACKEND_OPENCL)set_device(0)
然后,您可以在设备中创建阵列:
fromkhiva.arrayimport*a=Array([1,2,3,4,5,6,7,8])a.display()
前几行打印创建的阵列的尺寸和内容:
[8 1 1 1] |
---|
1.0000 |
2.0000 |
3.0000 |
4.0000 |
5.0000 |
6.0000 |
7.0000 |
8.0000 |
在设备内存中创建数组后,我们可以将操作与 以异步方式排列,并仅在to_list()时在主机中接收数据, 到~u numpy()或到~u pandas()(后者仅支持二维时间序列) 函数被调用。
a=a.to_pandas()print(a)
结果是下一个:
0 | |
---|---|
1 | 1.0 |
2 | 2.00 |
3 | 3.00 |
4 | 4.00 |
5 | 5.00 |
6 | 6.00 |
7 | 7.00 |
8 | 8.00 |
现在让我们深入探讨库的异步使用。 khiva库提供了一些时间序列分析功能,包括特征提取, 时间序列重维,距离计算,模体和不一致检测,相似性研究工具, 统计参数提取或时间序列归一化。
所有这些功能都可以连接起来以提高性能,因此您可以在 不使用此库功能的时刻:
fromkhiva.matriximport*stomp_result=stomp(Array(np.array([11,10,10,10,10,10,10,10,10,10,10,11])),Array(np.array([9,10,10,10,10,10,10,10,10,10,10,9])),3)find_best_n_discords_result=find_best_n_discords(stomp_result[0],stomp_result[1],2)a=find_best_n_discords_result[2].to_numpy()print(a)
前一个将生成以下输出:
[1.73190141 1.73185158] [8 8] [0 9] |
第一个numpy数组表示两个时间序列之间长度为3的子序列之间的最小距离。 第二个numpy数组表示第一个时间序列和第三个时间序列中这些子序列的位置 表示第二个时间序列中的索引。
我们想强调使用库计算不同后端和 不同的设备,知道这些操作应该在创建阵列的同一设备中执行。
#Adding operations in the different backends and devices.fromkhiva.featuresimport*set_backend(KHIVABackend.KHIVA_BACKEND_OPENCL)set_device(0)a=Array([1,2,3,4,5,6,7,8])b=mean(a)set_device(1)c=Array([1,2,3,4,5,6,7,8])d=mean(c)set_backend(KHIVABackend.KHIVA_BACKEND_CPU)set_device(0)e=Array([1,2,3,4,5,6,7,8])f=mean(e)#Retrieving the results of the previous operationsset_backend(KHIVABackend.KHIVA_BACKEND_OPENCL)set_device(0)print(b.to_numpy())set_device(1)print(d.to_numpy())set_backend(KHIVABackend.KHIVA_BACKEND_CPU)set_device(0)print(f.to_numpy())
输出是下一个:
4.5 |
4.5 |
4.5 |
注意,默认情况下使用的数据类型是32位浮点,以避免 设备,但可以故意更改。
下面是可用的数据类型:
Data type | Explanation |
---|---|
f32 | 32 bits Float |
c32 | 32 bits Complex |
f64 | 64 bits Double |
c64 | 64 bits Complex |
b8 | 8 bits Boolean |
s32 | 32 bits Int |
32u | 32 bits Unsigned Int |
u8 | 8 bits Unsigned Int |
s64 | 64 bits Int |
u64 | 64 bits Unsigned Int |
s16 | 16 bits Int |
u16 | 16 bits Unsigned Int |
有些函数不支持32位浮点数据类型,因此需要指示数据类型。 下面是一个需要32位有符号整数数组的示例函数:
cwt_coefficients_result=cwt_coefficients(Array([[0.1,0.2,0.3],[0.1,0.2,0.3]]),Array(data=[1,2,3],khiva_type=dtype.s32),2,2).to_numpy()print(cwt_coefficients_result)
输出为:
[0.26517162 0.26517162] |
限制
这个开源库提供了非常好的性能,但是它有内存限制。 对于需要对大量数据进行短期时间序列分析的情况, 请,contact us。
让我们摇滚吧!
现在,您已经有了开始使用库的基本概念。请按照每个功能的文档了解 如何使用它们。每个函数都有相应的测试,因此您可以检查如何使用它们。
此外,我们还提供了一些用例和示例,您可以使用这些用例和示例来学习在何处以及如何应用库。