首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Apache Arrow做"a +b+ c*5 + d*3"?

如何使用Apache Arrow做"a +b+ c*5 + d*3"?
EN

Stack Overflow用户
提问于 2021-06-13 20:35:15
回答 1查看 82关注 0票数 0

我得到了使用预定义函数的想法:计算"a + b","c * 5","d * 3“,然后将结果相加。

但是这种方式似乎生成了很多代码。有没有更好的方法来做到这一点?

顺便问一下,Apache Arrow默认使用SIMD (c++版本)吗?如果没有,我如何让它使用SIMD?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-14 20:27:59

PyArrow目前没有覆盖Python中的运算符,但是您可以很容易地调用算术计算函数。(这里使用functools.reduce,因为加法内核是二进制的,而不是n进制的。)

PyArrow根据编译时使用的标志,自动使用SIMD。它应该使用您的CPU支持的“最高”SIMD级别。并非所有计算函数实现都在内部利用SIMD。现在看来,主要是聚合内核做到了这一点。

代码语言:javascript
复制
>>> import pyarrow as pa
>>> import pyarrow.compute as pc
>>> import functools
>>> pa.__version__
'4.0.1'
>>> a = pa.array([1,2,3])
>>> b = pa.array([3,4,5])
>>> c = pa.array([1,0,1])
>>> d = pa.array([2,4,2])
>>> functools.reduce(pc.add, [pc.add(a,b), pc.multiply(c, 5), pc.multiply(d, 3)])
<pyarrow.lib.Int64Array object at 0x7fd5a0d9c040>
[
  15,
  18,
  19
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67958321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档