为什么numpy.size函数表现得很奇怪?

时间:2014-01-16 14:38:51

标签: python-2.7 numpy scikit-learn

我有一个名为 X_test 的矩阵,由sklearn.feature_extraction.text.CountVectorizer生成。当我执行以下功能时:

                import numpy as np
                np.set_printoptions(threshold='nan')
                print(X_test.shape)
                print(X_test.size)
                print(X_test.ndim)
                print(np.array(X_test))

我明白了:

  (10211, 218904)
  477881
  2
  (0, 934)  14
  (0, 6773) 1
  (0, 11035)    1
  (0, 22362)    1
  (0, 23619)    1
  (0, 24812)    1
  (0, 25224)    1
  : :
  (0, 64428)    1
  (0, 66506)    1

我不知道为什么尺寸不是矩阵尺寸(形状)的乘积。

1 个答案:

答案 0 :(得分:5)

CountVectorizer的结果是scipy.sparse矩阵,而不是NumPy数组。在这样的矩阵上,np.size报告实际存储的元素的数量,这些元素可以(应该)远小于shape的乘积。

(另外,要将其转换为数组,请使用toarray方法,但请注意,您将创建一个大小为几GB的数组,而不是用于稀疏格式的几个MB。)< / p>