基于一个数组中的元素将numpy数组的元素相乘。
import numpy as np
x = np.random.randint(-10,10, size=(12, 4))
x = np.insert(arr=x, values=np.random.choice([1,2,3,4], 12), obj=8, axis=1)
如果这些行在最后一列中具有相同的元素,我如何将x [:,4]行的元素相乘。
答案 0 :(得分:2)
您可以使用itertools.groupby
根据第4个元素对行进行分组,然后在np.multiply
函数中使用reduce
来计算multiply
:
>>> from operator import itemgetter
>>> from itertools import groupby
>>> [reduce(lambda x,y:np.multiply(x,y),g) for _,g in groupby(sorted(x,key=itemgetter(3)),itemgetter(3))]
[array([ 0, -7, -5, -7]), array([ 0, -588, 1296, 1]), array([ 9, -3, -1, 0]), array([ 56, -8, -60, 9]), array([ -9, -3, -10, 6]), array([-72, -9, -15, 64]), array([ 5, -8, -5, 9])]