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

TypeError:只有整数标量数组可以使用一维numpy索引数组转换为标量索引

牛华皓
2023-03-14
问题内容

我想编写一个函数,根据提供的 bin概率 从训练集中随机选择元素。我 将集合索引划分为11个bin ,然后为它们创建 自定义概率

bin_probs = [0.5, 0.3, 0.15, 0.04, 0.0025, 0.0025, 0.001, 0.001, 0.001, 0.001, 0.001]

X_train = list(range(2000000))

train_probs = bin_probs * int(len(X_train) / len(bin_probs)) # extend probabilities across bin elements
train_probs.extend([0.001]*(len(X_train) - len(train_probs))) # a small fix to match number of elements
train_probs = train_probs/np.sum(train_probs) # normalize
indices = np.random.choice(range(len(X_train)), replace=False, size=50000, p=train_probs)
out_images = X_train[indices.astype(int)] # this is where I get the error

我收到以下错误:

TypeError: only integer scalar arrays can be converted to a scalar index with 1D numpy indices array

我发现这很奇怪,因为我已经检查了创建的索引数组。它是 一维 ,是 整数 ,并且是 标量

我想念什么?

注:我试图通过indices使用astype(int)。同样的错误。


问题答案:

错误消息可能在某种程度上具有误导性,但要点是,它X_train是一个列表,而不是一个numpy数组。您不能在其上使用数组索引。首先使其成为数组:

out_images = np.array(X_train)[indices.astype(int)]


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

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

  • 以下代码: 只有整数标量数组可以转换为标量索引 请注意,我的问题与“numpy数组类型错误:只有整数标量数组可以转换为标量索引”的问题不同,后者正在尝试更复杂的操作。 我在这个问题中的错误是,我试图在一个普通的python列表中使用索引列表——参见我的答案。我希望它发生得更广泛,而不仅仅是使用范围和洗牌。

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

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

  • 我想写一个函数,根据提供的bin概率,从训练集中随机选取元素。我将集合索引划分为11个单元,然后为它们创建自定义概率。 我得到以下错误: 我觉得这很奇怪,因为我已经检查了我创建的索引数组。它是一维的,它是整数,它是标量。 我错过了什么? 注意:我试图通过传递