我正在寻找一种将函数应用于numpy数组的有效方法。我知道我可以循环遍历行,并且我可以使用numpy.apply_along_axis作为返回某些内容的函数,但是有没有办法在不返回的情况下执行apply_along_axis之类的操作?
例如,如果我有:
a_list_of_strings = [] A = numpy.array([[1,2,3],[4,5,6],[7,8,9]]) def funct (row): global a_list_of_strings a_list_of_strings.append(some_other_complicated_function(row))
有类似的方法吗? numpy.apply_along_axis与A和这个函数?
编辑:我想这样做的原因是我可以更好地实现以下代码(我之前没有发布,因为我觉得它很难阅读。
def entropy (array):
"""calculates the entropy of a static array"""
values = []
for i in range(3,len(types)+3):
p_s = sum(array[:,0]==i)/array.shape[0]
values.append(p_s)
return(sum(list(map(helper_ent,values))))
def helper_ent (p):
return (-p*np.log2(p+eps))
def calc_entropies (array):
entropies = []
eap = entropies.append
for i in range(1,len(array)+1):
split1 = array[array[:,i]==1.]
split2 = array[array[:,i]==0.]
if split1.shape[0]>0 and split2.shape[0]>0:
E = split1.shape[0]/array.shape[0]*entropy(split1)+split2.shape[0]/array.shape[0]*entropy(split2)
eap(E)
else:
eap(1)
return(np.array(entropies))</pre>