Numpy数组: 赋值操作失败

3

我有这段代码:

import numpy as np

a=np.array([5,6,7,8,9])
b=np.array([5,6,7,8,9])

scoreA = np.array([float(1) / (i + 1) for i in range(len(a))])
scoreB = np.array([0 for i in range(len(b))])

for eleA in a:
    if eleA in b:
        i, = np.where(b == eleA)
        i = i[0]
        j, = np.where(a == eleA)
        j = j[0]
        scoreB[i] = scoreA[j]

        print "B is: %f" % scoreB[i]
        print "A is: %f" % scoreA[j]

所以基本的想法是:对于数组a和b,如果一个元素在两个数组中都被找到,那么我将把该元素在scoreA中的分数分配给scoreB。但结果是这样的:
B is: 1.000000
A is: 1.000000
B is: 0.000000
A is: 0.500000
B is: 0.000000
A is: 0.333333
B is: 0.000000
A is: 0.250000
B is: 0.000000
A is: 0.200000

这意味着这行代码:
scoreB[i] = scoreA[j]

我的网站出现了问题,它不能正常工作。我该如何解决?


2
如果我理解正确,只需执行以下操作:mask = a==b; scoreB[mask] = scoreA[mask] - Divakar
1个回答

2
你的解决方案有些奇怪,最好按照@Divakar所说的去做。但是问题在于scoreAscoreB具有不同的类型:float64int64
scoreA = np.array([float(1) / (i + 1) for i in range(len(a))],dtype=float)
scoreB = np.array([0 for i in range(len(b))],dtype=float)

为了确保所有分数具有相同的类型,您可以使用其他数据类型来转换。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接