假设我们有三个同维度的数组
a
、b
、c
,需要基于每列数据进行计算。一个例子如下:import numpy as np
col = 10
row = 1000000
a = np.random.normal(size=(row, col))
b = np.random.normal(size=(row, col))
c = np.random.normal(size=(row, col))
def my_func(a, b, c):
if a[0] + b[0] + b[-1] > c[0]:
return a * b * c
else:
return a * (b[1] + b[-1]) + c[-1]
for i in range(num):
my_func(a[:, i], b[:, i], c[:, i])
首先考虑使用numpy,然而由于计算不是同质的并且涉及多个数组,numpy.apply_along_axes
不能使用。
在这种情况下,有没有什么建议可以加速python中的计算,而不是使用c?
num
是什么?它是col
吗? - Mad Physicistapply_along_axis
是一个速度工具。当处理3D(或更高维度)数据且您的fn
仅操作1D时,它只是一种方便的方法。 - hpaulj