总结跨越的“i”
我试图总结整个差的差异的“i”根据下面的公式:总结跨越的“i”
其中f是零和一的15X1阵列,它看起来像:
[[1] [0]
[0]
[0]
[0]
[0]
[0]
[0]
[0]
[1]
[1]
[0]
[0]
[0]
[0]]
和M是8×15矩阵的也零和一,第一行,其中是:
[0 0 1 1 1 1 0 1 0 0 0 1 1 0 0]
“f”在while循环内,随着每次迭代而变化,所以我需要做很多次。我想实现上面的公式,以便从M(C,i)的相应元素中减去f中的每个元素,然后取绝对值,然后对这些值求和。从手工计算这个值应该是10,所以很显然我目前的做法是错误的(这将返回117):
(np.sum(abs(f - M[C,])))
我可能会丢失一些东西很明显这里,任何人都可以提出建议?当我尝试循环范围(0,15)时,我也关闭。
回答:
在减法过程中,您需要f
到broadcast跨越M
。要做到这一点,形状必须兼容。 f
必须reshaped
f.reshape(-1) - M
f = np.random.random_integers(0,1,(15,1)) M = np.random.random_integers(0,1,(5,15))
>>> f.shape
(15, 1)
>>> M.shape
(5, 15)
>>> g = f.reshape(-1)
>>> g.shape
(15,)
>>> g
array([1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0])
>>> g - M
array([[ 0, 1, 0, 0, -1, 1, 0, -1, -1, 0, 0, -1, 1, 0, 0],
[ 0, 1, 1, 0, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, -1],
[ 0, 1, 0, -1, -1, 1, 0, 0, 0, 0, 0, -1, 0, 0, -1],
[ 1, 0, 0, -1, 0, 0, 1, -1, -1, 1, 0, -1, 0, 0, 0],
[ 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0]])
>>>
.ravel()
也适用。
>>> f.ravel() array([1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0])
>>> f.ravel() - M
array([[ 0, 1, 0, 0, -1, 1, 0, -1, -1, 0, 0, -1, 1, 0, 0],
[ 0, 1, 1, 0, -1, 1, 0, 0, -1, 1, 0, 0, 0, 0, -1],
[ 0, 1, 0, -1, -1, 1, 0, 0, 0, 0, 0, -1, 0, 0, -1],
[ 1, 0, 0, -1, 0, 0, 1, -1, -1, 1, 0, -1, 0, 0, 0],
[ 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0]])
>>>
最后:
>>> np.sum(np.absolute(f.reshape(-1) - M)) 30
>>>
回答:
如果我直接读取的问题,你可以不喜欢
np.sum(np.abs(f.T - M[C])
例如:
import numpy as np np.random.seed(0)
f = np.random.choice([0, 1], (15, 1))
M = np.random.choice([0, 1], (8, 15))
C = 0
np.sum(np.abs(f.T - M[C])) # 7
要获得所有行的结果一次,你可以使用
np.sum(np.abs(f.T - M), axis=1) # [7, 7, 6, 9, 8, 5, 9, 7]
以上是 总结跨越的“i” 的全部内容, 来源链接: utcz.com/qa/257325.html