当我从numpy数组获取行索引时:只有size-1数组才能转换为Python标量

当我从numpy数组获取行索引时:只有size-1数组才能转换为Python标量,python,arrays,numpy,Python,Arrays,Numpy,我试图实现背包问题的“蛮力”,我随机生成价值和成本表。我的BruteForce返回更正的答案,但有时它返回TypeError:只有size-1数组可以转换为Python标量。问题出现在“bestItems.append(int(np.where(np.all(table==元素,axis=1))[0])”这一行中 返回: TypeError:只有大小为1的数组才能转换为Python标量 但如果table=: np.array([[9, 6], [4, 7], [8 ,9], [9, 7],

我试图实现背包问题的“蛮力”,我随机生成价值和成本表。我的BruteForce返回更正的答案,但有时它返回TypeError:只有size-1数组可以转换为Python标量。问题出现在“bestItems.append(int(np.where(np.all(table==元素,axis=1))[0])”这一行中

返回: TypeError:只有大小为1的数组才能转换为Python标量

但如果table=:

np.array([[9, 6],
 [4, 7],
 [8 ,9],
 [9, 7],
 [3, 4]])
返回:(20、[1、2、4])


您需要更可靠地处理匹配。

为什么要调用
int()
int(np.array([1,2])
会产生此错误。我调用
int()
,因为“np.where(np.all(table==element,axis=1))[0]”返回带索引的列表。请提供一个,以及整个错误输出。另一方面,您似乎在混合/组合多种命名约定,变量和函数名称应遵循带有下划线的
小写形式,除非有充分的理由不这样做。非常感谢,我现在明白了:D
np.array([[2, 8],
 [2, 8],
 [6 ,7],
 [6, 5],
 [6, 1]])
np.array([[9, 6],
 [4, 7],
 [8 ,9],
 [9, 7],
 [3, 4]])
In [45]: table = np.array([[2, 8], 
    ...:  [2, 8], 
    ...:  [6 ,7], 
    ...:  [6, 5], 
    ...:  [6, 1]])                                                              

In [47]: np.all(table==[2,8], axis=1)                                           
Out[47]: array([ True,  True, False, False, False])
In [48]: np.where(np.all(table==[2,8], axis=1))                                 
Out[48]: (array([0, 1]),)
In [49]: np.where(np.all(table==[2,8], axis=1))[0]                              
Out[49]: array([0, 1])
In [50]: int(np.where(np.all(table==[2,8], axis=1))[0])                         
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-50-cb698d9f7e05> in <module>
----> 1 int(np.where(np.all(table==[2,8], axis=1))[0])

TypeError: only size-1 arrays can be converted to Python scalars
In [51]: int(np.where(np.all(table==[2,7], axis=1))[0])                         
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-51-294e3139501e> in <module>
----> 1 int(np.where(np.all(table==[2,7], axis=1))[0])

TypeError: only size-1 arrays can be converted to Python scalars
In [52]: int(np.where(np.all(table==[6,7], axis=1))[0])                         
Out[52]: 2