我正在尝试将一个类方法中的for循环向量化。for循环的形式如下:它遍历一堆点,并根据一个名为“self.condition_met”的变量是否为真,调用一对函数来处理该点,并将结果添加到列表中。这里的每个点都是向量列表的一个元素,即一个数据结构,看起来像array([[1,2,3], [4,5,6], ...])。以下是有问题的函数:
def myClass:
def my_inefficient_method(self):
final_vector = []
# Assume 'my_vector' and 'my_other_vector' are defined numpy arrays
for point in all_points:
if not self.condition_met:
a = self.my_func1(point, my_vector)
b = self.my_func2(point, my_other_vector)
else:
a = self.my_func3(point, my_vector)
b = self.my_func4(point, my_other_vector)
c = a + b
final_vector.append(c)
# Choose random element from resulting vector 'final_vector'
在调用my_inefficient_method之前,self.condition_met已经被设置了,所以每次检查它似乎是不必要的,但我不确定如何更好地编写代码。由于这里没有破坏性操作,因此似乎可以将整个过程重写为矢量化操作——这是可能的吗?有什么想法吗?