你可以将函数应用于numpy数组的行而不返回吗?

时间:2018-01-19 02:53:21

标签: python arrays numpy

我正在寻找一种将函数应用于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>

0 个答案:

没有答案