Numpy gives "TypeError: can't multiply sequence by non-int of type 'float'"
Numpy gives "TypeError: can't multiply sequence by non-int of type 'float'"
有问题的部分是:
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 是 Panda 数据帧。 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)
Type Error: can't multiply sequence by non-int of type 'float'
就是它所说的意思。您不能将非数字(非整数)数据类型与编号数据类型相乘。
例如,您不能将字符串与数字相乘。
您提交的上述代码实际上 有效。但是,由于您收到此错误,我假设上面的代码只是您实际代码的代理。因此,我将讲述我是如何解决我在做类似事情时遇到的相同错误的。
假设有一个 csv 文件包含 class 的主题标记,例如下面的 table
| | Maths | English |
| Adam | 98 | 78 |
| John | 34 | 89 |
如您所见,有一个行索引和一个列索引。如果你运行
marks = pd.read_csv("marks.csv")
marks
将有 3 列,第一列包含学生的姓名。 Pandas
read 假定第一列是数据的一部分。现在,如果将它与 Numpy
数组相乘,就会出现错误。因为,数字不能与字符串相乘。
为了解决这个问题,我们需要明确地告诉pandas文件中的第一列是行索引。
marks = pd.read_csv("marks.csv", index_col=0)
参数,index_col
告诉将文件中的哪一列作为行索引。
您可以在他们的文档 here.
中详细了解这一点
有问题的部分是:
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 是 Panda 数据帧。 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)
Type Error: can't multiply sequence by non-int of type 'float'
就是它所说的意思。您不能将非数字(非整数)数据类型与编号数据类型相乘。
例如,您不能将字符串与数字相乘。
您提交的上述代码实际上 有效。但是,由于您收到此错误,我假设上面的代码只是您实际代码的代理。因此,我将讲述我是如何解决我在做类似事情时遇到的相同错误的。
假设有一个 csv 文件包含 class 的主题标记,例如下面的 table
| | Maths | English |
| Adam | 98 | 78 |
| John | 34 | 89 |
如您所见,有一个行索引和一个列索引。如果你运行
marks = pd.read_csv("marks.csv")
marks
将有 3 列,第一列包含学生的姓名。 Pandas
read 假定第一列是数据的一部分。现在,如果将它与 Numpy
数组相乘,就会出现错误。因为,数字不能与字符串相乘。
为了解决这个问题,我们需要明确地告诉pandas文件中的第一列是行索引。
marks = pd.read_csv("marks.csv", index_col=0)
参数,index_col
告诉将文件中的哪一列作为行索引。
您可以在他们的文档 here.