无法将矩阵相乘并列出“float”类型

2024-06-11 15:22:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用一个列表(log_train_probs_nonspam_words)乘以矩阵(transpose_test_feature)。矩阵的大小为(2500*260),列表的大小为2500个项目。我想把它们相乘。在

但我有这个类型的错误:

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

有人能迅速帮我吗?在


multiply_nonspam_test = []
for i in range(0, len(transpose_test_feature)):
      x = log_train_probs_nonspam_words[i] *transpose_test_feature[i]
      multiply_nonspam_test.append(x)

print multiply_nonspam_test

输入:

log_train_probs_nonspam_words(示例):

^{pr2}$

transpose_test_feature(原来是2500*260矩阵,我给出了矩阵的第一行):

[0, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 2, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 3, 1, 0, 2, 3, 0, 0, 2, 2, 0, 5, 1, 3, 0, 0, 3, 3, 0, 0, 1, 0, 1, 1, 1, 3, 0, 0, 3, 4, 1, 8, 0, 0, 0, 1, 3, 2, 0, 2, 2, 0, 0, 0, 1, 2, 0, 3, 2, 1, 0, 0, 1, 0, 3, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 2, 1, 1, 0, 18, 0, 10, 13, 3, 0, 2, 1, 7, 7, 0, 11, 8, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 9, 0, 4, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 42, 11, 5, 0, 19, 3, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 5, 3, 1, 8, 0, 0, 2, 3, 14, 0, 2, 0, 13, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20, 2, 29, 29, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0]

Tags: 项目testlog类型列表错误train矩阵
2条回答

您可以使用NumPy来加快速度:

import numpy as np

a1 = np.array(log_train_probs_nonspam_words)
a1 = a1.reshape(a1.shape[0], 1)
a2 = np.array(transpose_test_feature)

multiply_nonspam_test = a1 * a2

你正在用一个浮点数乘以一个列表。你应该把矩阵的每一行都乘以单词。像这样的东西会有用的。在

multiply_nonspam_test = []
for row in transpose_test_feature:
  multiply_nonspam_test.append([x*y for x,y in zip(row, log_train_probs_nonspam_words)])

print multiply_nonspam_test

相关问题 更多 >