gpt4 book ai didi

Python 类型错误 : only integer scalar arrays can be converted to a scalar index

转载 作者:行者123 更新时间:2023-11-28 20:57:16 28 4
gpt4 key购买 nike

我为这个问题做了一个更简单的两个数组的例子: labelArray 是一个一维数组,在索引处有标签,对应于 nD 数组 someValuesArray。我得到了标签 2 出现的所有索引,并希望检索 someValuesArray 中的值。

labelArray = [2,0,1,2]

someValuesArray= [array([[ 2.15072 , 2.12438 , 2.27047 , 2.64567 ,
2.22976 , 2.18186 ]], dtype=float32),
array([ [ 2.29442, 2.3087 , 2.3111 , 2.1962 , 2.23694, 2.16988]], dtype=float32)),
array([[2.82851 , 2.73032 , 2.78301 , 1.71722 , 1.81542 , 1.78189 ]], dtype=float32)),
array([[ 1.19271, 1.14721, 1.27894 , 1.16637, 1.23343, 1.21666]], dtype=float32)]

因此,如果我想要标签 2,我会得到索引 0 和 3,这应该为我提供相应数组 someValuesArray 中索引 0 和 3 的值。

但是当我想调用我的函数时,我收到一个 TypeError @ array[indices]

TypeError: only integer scalar arrays can be converted to a scalar index

我的功能:

def searchValues(array, value):
labelArray = [2,0,1,2]
values_of_array = np.array(labelArray)
indices = np.where(values_of_array == value)[0]
return array[indices]

searchValues(someValuesArray,2)

最佳答案

如评论中所述,someValuesArray 是二维 numpy 数组的列表。我已将其转换为 np.array。您问题中的代码示例尝试使用 numpy 数组索引 python 列表,这会导致您收到错误消息。

In [111]: a=np.array(someValuesArray) # Convert to a numpy array

In [112]: a
Out[112]:
array([[[ 2.15071988, 2.12438011, 2.2704699 , 2.64566994, 2.22975993, 2.18185997]],
[[ 2.29442 , 2.30870008, 2.31110001, 2.19619989, 2.23693991, 2.16987991]],
[[ 2.82851005, 2.73031998, 2.78301001, 1.71721995, 1.81542003, 1.78189003]],
[[ 1.19271004, 1.14721 , 1.27893996, 1.16637003, 1.23343003, 1.21666002]]], dtype=float32)

In [113]: def searchValues(array, value):
labelArray = [2,0,1,2]
values_of_array = np.array(labelArray)
indices = np.where(values_of_array == value)[0]
# print statements added to see what's happening
print("Indices: ", indices)
print("Array selection: \n", array[indices])
return array

searchValues(a,2)
[Out]
Indices: [0 3]
Array selection:
[[[ 2.15071988 2.12438011 2.2704699 2.64566994 2.22975993 2.18185997]] # a[0]
[[ 1.19271004 1.14721 1.27893996 1.16637003 1.23343003 1.21666002]]] # a[3]

Out[113]:
array(
[[[ 2.15071988, 2.12438011, 2.2704699 , 2.64566994, 2.22975993, 2.18185997]],
[[ 2.29442 , 2.30870008, 2.31110001, 2.19619989, 2.23693991, 2.16987991]],
[[ 2.82851005, 2.73031998, 2.78301001, 1.71721995, 1.81542003, 1.78189003]],
[[ 1.19271004, 1.14721 , 1.27893996, 1.16637003, 1.23343003, 1.21666002]]], dtype=float32)

indices = np.where(values_of_array == value)[0] 返回的两个索引都用于指向数组中的行。

您已经从函数返回了整个数组:您真的要返回 array[indices] 吗?

关于Python 类型错误 : only integer scalar arrays can be converted to a scalar index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53461303/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com