Numpy数组:值赋值失败

时间:2017-08-24 10:21:35

标签: python arrays numpy

我有这段代码:

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]

工作不正常?我该如何解决这个问题?

1 个答案:

答案 0 :(得分: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)

或其他一些dtype,以确保您的所有分数都具有相同的类型。