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