你需要告诉我们一些关于这一点:dataset = datas.values
这可能是一个二维数组,因为它从一个CSV的负载派生的。但是什么形状和dtype?甚至可能是阵列的一个样本。
难道是data参数中的函数吗?
什么是blackKings和values?你把他们当作名单(与append)。
for i in data:
if data[i][39] == 1:
这没有意义。 for i in data,如果data是2D,i是第一排,然后第二行,等等。如果你在一个索引要i来,你使用类似
for i in range(data.shape[0]):
二维数组索引通常与data[i,39]完成。
但在你的情况下,data[i][39]可能是一个数组。
无论何时在if声明中使用数组,您将得到这个ValueError,因为有多个值。
如果i是合适的索引,那么data[i,39]将是单个值。
为了说明:
In [41]: data=np.random.randint(0,4,(4,4))
In [42]: data
Out[42]:
array([[0, 3, 3, 2],
[2, 1, 0, 2],
[3, 2, 3, 1],
[1, 3, 3, 3]])
In [43]: for i in data:
...: print('i',i)
...: print('data[i]',data[i].shape)
...:
i [0 3 3 2] # 1st row
data[i] (4, 4)
i [2 1 0 2] # a 4d array
data[i] (4, 4)
...
i这里是4元件阵列;使用它来索引data[i]实际上会产生一个4维数组;它不是选择一个值,而是选择很多值。
相反,你需要以下列方式之一进行迭代:
In [46]: for row in data:
...: if row[3]==1:
...: print(row)
[3 2 3 1]
In [47]: for i in range(data.shape[0]):
...: if data[i,3]==1:
...: print(data[i])
[3 2 3 1]
要调试这样,你需要看中间值的一个问题,尤其是它们的形状。不要只假设。检查!