Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy数组:赋值失败_Python_Arrays_Numpy - Fatal编程技术网

Python Numpy数组:赋值失败

Python Numpy数组:赋值失败,python,arrays,numpy,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 == e

我有以下代码片段:

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]

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

您的解决方案很奇怪,最好按照@Divakar所说的那样解决。 但无论如何,《代码>分数A》和《代码>分数B》有不同的类型:
float64
int64

制造


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

IIUC,只需执行:
mask=a==b
<代码>scoreB[mask]=scoreA[mask]。
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)