Python 类型错误:';numpy.float64';对象不支持项分配

Python 类型错误:';numpy.float64';对象不支持项分配,python,numpy,Python,Numpy,在以下行中发生: TypeError: 'numpy.float64' object does not support item assignment 有人有办法解决这个问题吗?谢谢 尝试此测试代码并注意np.array([1,2,3],dtype=np.float64)。 似乎self.svm.decision_函数(vectors)返回的是1d数组,而不是2d。 如果将[1,2,3]替换为[[1,2,3],[4,5,6]],一切都会正常 predictions[predic

在以下行中发生:

TypeError: 'numpy.float64' object does not support item assignment

有人有办法解决这个问题吗?谢谢

尝试此测试代码并注意
np.array([1,2,3],dtype=np.float64)
。 似乎self.svm.decision_函数(vectors)返回的是1d数组,而不是2d。 如果将[1,2,3]替换为[[1,2,3],[4,5,6]],一切都会正常

        predictions[predictions > 1] = 1
将numpy导入为np
预测=np.array([1,2,3],dtype=np.float64)
预测=np.转置(预测)[0]
预测=预测/2+0.5
预测[预测>1]=1
预测[预测<0]=0
输出:

import numpy as np
predictions = np.array([1,2,3], dtype=np.float64)
predictions = np.transpose(predictions)[0]
predictions = predictions / 2 + 0.5
predictions[predictions > 1] = 1
predictions[predictions < 0] = 0
回溯(最近一次呼叫最后一次):
文件“D:\temp\test.py”,第7行,在
预测[预测>1]=1
TypeError:“numpy.float64”对象不支持项分配
那么,向量是什么

Traceback (most recent call last):
  File "D:\temp\test.py", line 7, in <module>
    predictions[predictions > 1] = 1
TypeError: 'numpy.float64' object does not support item assignment
是一个布尔运算

predictions > 1
评估为

predictions[predictions > 1] = 1
你在找接线员。您的代码应该如下所示:

predictions[True]
数组中没有大于1的元素,因此您不能将1分配给预测[predictions>1],您可以在分配之前使用“predictions>1”。

您不能同时在所有元素中执行此操作, 预测=预测/2+0.5

如果要更新“预测”包含的所有元素,请执行以下操作 你在这里干什么??????????? 预测[预测>1]=1

我不确定你想做什么,但如果你想比较“预测”的每个索引中的元素是否大于1,不如将这些语句放在上面的if语句下面,如下所示 范围内i的
(预测):
预测[i]=预测[i]/2+0.5
如果预测[i]>1:
预测[i]=1
elif预测[i]<0:
预测[i]=0
回归预测

错误发生在哪一行?您应该始终从Python发布“回溯”。当您分配
predictions=np.transpose(predictions)[0]
时,您进行了
predictions
标量。因此,当您尝试再往下做2行和3行时,您不能再为其编制索引。你想完成什么?!抱歉,此行“预测[predictions>1]=1”:TypeError:'numpy.float64'对象不支持项assignment@chen你找到解决问题的办法了吗?你能给我看一下吗?FWIW,我用numpy 0.17和csaps 0.11得到了这样的错误。更新到numpy 0.19和csaps 1.0修复了该问题。因此,升级可能有助于解决此问题
不支持项目分配
错误。嗨,Max,如何知道向量是什么?我在同一代码上使用了debug on Spider,但我不知道如何找出向量变量中的内容这是numpy索引(predictions[predictions>1]=1),这种语法可以在正确的上下文中工作
predictions[True]
predictions[np.where(predictions > 1)] = 1
    >>> predictions = np.array([1,2,3], dtype=np.float64)
    >>> predictions
    array([1., 2., 3.])
    >>> predictions = np.transpose(predictions)[0]
    >>> predictions
    1.0
    >>> predictions = predictions / 2 + 0.5
    >>> predictions
    1.0
    >>> predictions>1
    False
for i in range(predictions):
   predictions[i] = predictions[i] / 2 + 0.5
                                    
 
for i in range(predictions):
  predictions[i] = predictions[i] / 2 + 0.5
  if predictions[i] > 1:
     predictions[i] = 1
  elif predictions[i] < 0 : 
     predictions[i] = 0

return predictions