在下面的代码中,“countOf1”的结果是0而不是12.原因是什么?如何解决?
import numpy as np
import pandas as pd
x = np.matrix(np.arange(12).reshape((1, 12)))
x[:,:]=1
countOf1=(x.tolist()).count(1)
答案 0 :(得分:0)
这是因为当您将其转换为包含tolist()
的列表时,您将获得列表的子集。这意味着这是您的x
:
x.tolist()
Out[221]: [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
要让countOf1
工作,您需要为x.tolist()[0]
执行此操作。这会给你:
x.tolist()[0].count(1)
Out[223]: 12
答案 1 :(得分:0)
请记住,numpy矩阵就像列表一样。即使您只创建了一个行向量,numpy也会用2个括号([[0,1,2,3,4 ...,11]])写入它。因此,当您将其更改为带有tolist()的列表时,您在列表中创建了一个列表。由于列表中的列表!= 1,因此计数为0.