Swifter:向量化函数和非向量化函数有什么区别?

3

我希望您能帮忙翻译关于pandas速度优化的内容。对于我的问题,一个非常有效的库是swifter。但是我不太理解其中的文档,特别是向量化函数。

我的假设是swifter输入只接受向量输入,而不是数据框。这是否错误?

在文档中,这是一个向量化函数:

def bikes_proportion(x, max_x):
    return x * 1.0 / max_x

这是非矢量化的函数:

def convert_to_human(datetime):
    return datetime.weekday_name + ', the ' + str(datetime.day) + 'th day of ' + datetime.strftime("%B") + ', ' + str(datetime.year)

什么是区别?

你能告诉我向量化函数和非向量化函数的区别吗?如果你曾经使用过Swifter,请问它可以与数据框架一起使用还是只能处理向量数据呢?

1个回答

3

我在尽力用简单的用例来解释,

向量化代码是指在同一语句中同时对向量的多个组件执行操作。

import numpy as np

a = np.array([1,2,3,4,5])
b = np.array([1,1,1,1,1])
c = a+b

参考下面的代码,操作数是标量而不是向量,每次对向量a和向量b的一个分量进行操作。
a = [1,2,3,4,5]
b = [1,1,1,1,1]
c = []
for a_, b_ in zip(a, b):
    c.append(a_ + b_)

Swifter可以应用于数据框架,参考:https://github.com/jmcarpenter2/swifter

df = pd.DataFrame({'x': [1, 2, 3, 4], 'y': [5, 6, 7, 8]})
df['agg'] = df.swifter.apply(lambda x: x.sum() - x.min())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接