当前位置: 首页 > 面试题库 >

TypeError:只有长1的数组可以转换为Python标量,而图显示

乜思淼
2023-03-14
问题内容

我有这样的Python代码:

import numpy as np
import matplotlib.pyplot as plt

def f(x):
    return np.int(x)

x = np.arange(1, 15.1, 0.1)
plt.plot(x, f(x))
plt.show()

而这样的错误:

TypeError: only length-1 arrays can be converted to Python scalars

我该如何解决?


问题答案:

当函数需要单个值但您传递数组时,会出现错误“仅将length-1数组可以转换为Python标量”。

如果查看的呼叫签名np.int,您会看到它接受单个值,而不是数组。通常,如果要对数组中的每个元素应用一个接受单个元素的函数,则可以使用np.vectorize

import numpy as np
import matplotlib.pyplot as plt

def f(x):
    return np.int(x)
f2 = np.vectorize(f)
x = np.arange(1, 15.1, 0.1)
plt.plot(x, f2(x))
plt.show()

您可以跳过f(x)的定义,而只需将np.int传递给vectorize函数:f2 = np.vectorize(np.int)

注意,这np.vectorize只是一个便利函数,基本上是for循环。在大型阵列上这将是低效的。每当你有可能,使用真正的矢量函数或方法(如astype(int)为@FFT建议。



 类似资料:
  • 为什么在下面的代码中会出现此错误?我用的是Spyder 3.1。4,我通过IPython控制台运行这个。 编辑:完全错误: ['477''6615''63744'…,'NaN''NaN''NaN']回溯(最近一次呼叫最后一次): 文件“”,第1行,在运行文件中('C:/Users/ptillotson/Documents/Python Scripts/ud120 projects master/k

  • 我为这个问题制作了两个数组的简单示例:是一个一维数组,索引处有标签,对应于nD数组的相同索引。我获取标签2出现的所有索引,并希望检索中的值。 因此,如果我想要标签2,我得到索引0和3,这应该给我相应数组中索引0和3的值。 但是当我想调用我的函数时,我收到一个TypeError@。 我的职能:

  • 我知道关于这个错误已经有几个问题了。但在这种特殊情况下,我不确定是否已经有了解决我问题的方法。我有这部分代码,我想打印数据帧df的“y”列。发生以下错误:TypeError:只有整数标量数组才能转换为标量索引 可以打印整个数据帧。这看起来像: 这是整个错误消息: 我认为这与numpy阵列有关。提前谢谢你!

  • 我想从官方熊猫留档...DataFrame.fillna所以基本上用值1填充df数据框“myc”列中的NaN值。 数据帧 代码1 成果目标1 误差表第1页 代码2我后来还尝试列出any_feature列 错误2 尝试解决方案 Not dictionary - Pandas: Getting "TypeError: only integer scalar arrays can be converte

  • 数据文件:pattern1.ktx 结果:TypeError:只能将整数标量数组转换为标量索引 看起来够简单?不过我不明白。如何解决这个问题?谢谢你。 这个怎么样? 同样的错误。如何修复?

  • 我正在尝试一个来自github链接的tensorflow的简单演示代码 我目前正在使用python版本3.5。2 我在命令行中尝试board.py时遇到了这个错误。我已经安装了运行此操作所需的所有依赖项。