为什么count对这个列表不起作用?(在python中)

时间:2015-11-16 04:12:33

标签: python numpy import

在下面的代码中,“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)

2 个答案:

答案 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.