什么';在python中为列表编制索引有什么问题?

什么';在python中为列表编制索引有什么问题?,python,numpy,Python,Numpy,这不是一个重复的问题,因为我想知道代码中的错误,而不是寻找替代解决方案 我下面的代码出了什么问题? 结果仅由51个元素组成,但还应包括列表“data_B”中的其他元素30、11、29 import numpy as np names_A = ['David', 'Mark', 'Brian', 'Michael'] data_A = [4,3,1,2] names_B = ['Mark', 'David', 'Michael', 'Brian'] data_B = [51,30,11,29]

这不是一个重复的问题,因为我想知道代码中的错误,而不是寻找替代解决方案

我下面的代码出了什么问题?
结果仅由51个元素组成,但还应包括列表“data_B”中的其他元素30、11、29

import numpy as np

names_A = ['David', 'Mark', 'Brian', 'Michael']
data_A = [4,3,1,2]

names_B = ['Mark', 'David', 'Michael', 'Brian']
data_B = [51,30,11,29]

data = np.array([[4,4,3,3,2,2,1,1,3,3],
                [4,3,3,3,2,2,3,1,3,1],
                [4,2,3,3,2,2,4,1,4,3]])


dats = data.ravel()

results = []
for d in dats:
    nam_A = names_A[data_A == int(d)]
    ##HERE IS THE POTENTIAL ERROR!!!
    dat_B = data_B[names_B == nam_A]
    results.append(dat_B)

print np.array(results).reshape(data.shape)


[[51 51 51 51 51 51 51 51 51 51]
 [51 51 51 51 51 51 51 51 51 51]
 [51 51 51 51 51 51 51 51 51 51]]
我下面的代码出了什么问题

data\u A==int(d)
返回
False/0
,因为列表永远不可能等于整数,所以每次
namu A的元素
0
都会得到相同的结果

然后你使用
dat_B=data_B[names_B==namu A]
A.k.A
['Mark'、'David'、'Michael'、'Brian']==“David”
,这同样是
False/0
,因为列表不能等于字符串,所以你一次又一次地添加
数据的元素
0

我不知道你的代码的逻辑是什么,你创建一个数组,调用ravel,不使用数组来做列表不能做的事情