python遍历二维数组_在Python中遍历二维数组?

你需要告诉我们一些事情:dataset = datas.values

它可能是一个二维数组,因为它来自一个csv负载。但是什么形状和数据类型?甚至可能是阵列的一个样本。

这是函数中的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]

要调试这样的问题,您需要查看中间值,特别是它们的形状。不要只是假设。检查一下!

你可能感兴趣的:(python遍历二维数组)