khiva的python绑定

khiva的Python项目详细描述


这是连接python编程语言的khiva绑定 以及KHIVA C++库。

许可证

本项目的许可 MPL-v2

安装khiva

首先,应安装KHIVA C++库:

Khiva documentation

然后,使用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
11.0
22.00
33.00
44.00
55.00
66.00
77.00
88.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 typeExplanation
f3232 bits Float
c3232 bits Complex
f6464 bits Double
c6464 bits Complex
b88 bits Boolean
s3232 bits Int
32u32 bits Unsigned Int
u88 bits Unsigned Int
s6464 bits Int
u6464 bits Unsigned Int
s1616 bits Int
u1616 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

让我们摇滚吧!

现在,您已经有了开始使用库的基本概念。请按照每个功能的文档了解 如何使用它们。每个函数都有相应的测试,因此您可以检查如何使用它们。

此外,我们还提供了一些用例和示例,您可以使用这些用例和示例来学习在何处以及如何应用库。

文档

这个python库遵循使用sphinx编写python文档的标准方法。

文档位于:

Khiva Python documentation

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android:收到无声短信?   java Android清单内部类应使用$,而不是   是否有方法使用java客户端从Amqp 0.9.1 RabbitMq代理获取绑定到队列的所有头?   比较2个int数组中匹配的数字   java如何模拟可选的自动连接字段   java在第一次尝试保存数据后,在关闭程序后无法打开   批处理文件重命名–从列表中插入文本(在Python或Java中)   递归如何在Java中递归地附加两个链表?   java EditText在特定Android设备上不起作用   序列化Java序列化:每个文件一个对象   java AES CTR如何附加到CipherOutputStream?   java Apache Commons CSV不会忽略缺少的列   java查询bean为空,如何让它填充?   java BEAM:ORACLE连接器:数字数据类型:非法参数类型异常   tomcat7 java远程调试Tomcat应用程序:为什么JVM不监听?   底部表单中的java应用程序流,带有片段   Android中txt文件数据与输入字符串的java比较   java将多个JAR上载到gradle中的repo   java会话。getAttribute在禁用Cookie时返回null   java如何向ImageView添加项目列表