Numpy给出" TypeError:不能将序列乘以非int类型' float'"

时间:2018-05-31 01:38:21

标签: python numpy matrix scipy nmf

有问题的部分是:

   self.H = np.multiply(self.H, np.divide(np.matmul(preprocessing.normalize(self.W).T, np.multiply(self.X, np.power(self.A, self.beta - 2)))), np.matmul(self.W.T, np.power(self.A, self.beta - 1)) + self.sparsity)

A,W,H是熊猫数据帧。 Beta和稀疏度是整数。

他们的初始化是:

    self.W = pd.DataFrame(np.random.randint(100,size=(self.X.shape[0], self.K)))
    self.H = pd.DataFrame(np.random.randint(0,100,size=(self.K, self.X.shape[1])))
    self.W = preprocessing.normalize(self.W)
    self.A = self.W.dot(self.H)

1 个答案:

答案 0 :(得分:1)

IMainActivity mIMainActivity = new MainActivity(); 正是它所说的。您不能将非数字(非int)数据类型与编号数据类型相乘。 例如,您不能将字符串与数字相乘。

您提交的上述代码实际有效。但是,由于您收到此错误,我认为上面的代码只是您实际代码的代理。所以,我会告诉我如何解决我在做类似事情时遇到的同样的错误。

假设有一个csv文件包含类的主题标记,如下表所示

Type Error: can't multiply sequence by non-int of type 'float'

如您所见,有一个行索引和一个列索引。如果你运行

|      | Maths | English |
| Adam |  98   |   78    |
| John |  34   |   89    |

marks = pd.read_csv("marks.csv") 将有3列,其中第一列包含学生的姓名。 marks读取假定第一列是数据的一部分。现在,如果将其与Pandas数组相乘,则会出现错误。因为,数字不能与字符串相乘。

要解决这个问题,我们需要明确告诉pandas文件中的第一列是行索引。

Numpy

参数marks = pd.read_csv("marks.csv", index_col=0) 告诉文件中的哪一列作为行索引。 您可以在他们的文档here中详细了解这一点。