Swifter:向量化函数和非向量化函数有什么区别?
Swifter: what is the difference vectorized and non-vectorized function?
我需要了解 pandas 速度优化。对我的问题非常有效的库更快。但是我不了解文档,尤其是矢量化函数。
我的假设是更快的输入只接受矢量输入,而不是数据帧。有错吗?
在文档中这是矢量化函数:
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。 swifter 可以使用 dataframe 还是只能使用 vector?
这里我尽量用简单的用例来解释,
矢量化代码是指在向量的多个分量上执行的操作
同时(在一个声明中)
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())
我需要了解 pandas 速度优化。对我的问题非常有效的库更快。但是我不了解文档,尤其是矢量化函数。
我的假设是更快的输入只接受矢量输入,而不是数据帧。有错吗?
在文档中这是矢量化函数:
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。 swifter 可以使用 dataframe 还是只能使用 vector?
这里我尽量用简单的用例来解释,
矢量化代码是指在向量的多个分量上执行的操作 同时(在一个声明中)
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())