我为这个问题制作了两个数组的简单示例: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,这应该给我相应数组中索引0和3的值someValuesArray
。
但是当我想调用我的函数时,我收到一个TypeError@array[index]
。
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)
我可以复制您的错误消息:
用标量数组列出索引:
In [7]: [1,2,3,4][np.array(1)]
Out[7]: 2
使用(1,)形状数组列出索引;一个元素,但不是标量数组:
In [8]: [1,2,3,4][np.array([1])]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-8-4ad73b219fa3> in <module>()
----> 1 [1,2,3,4][np.array([1])]
TypeError: only integer scalar arrays can be converted to a scalar index
但是可以像这样索引数组:
In [9]: np.array([1,2,3,4])[np.array([1])]
Out[9]: array([2])
如注释中所述,someValuesArray
是2d numpy数组的列表。我已将其转换为np。数组
。问题中的代码示例尝试使用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)
index=np返回的两个索引。其中(数组的值=value)[0]
用于指向数组中的行。
您已经从函数返回了整个数组:您真的打算返回数组[index]
吗?
我正在尝试一个来自github链接的tensorflow的简单演示代码 我目前正在使用python版本3.5。2 我在命令行中尝试board.py时遇到了这个错误。我已经安装了运行此操作所需的所有依赖项。
我知道关于这个错误已经有几个问题了。但在这种特殊情况下,我不确定是否已经有了解决我问题的方法。我有这部分代码,我想打印数据帧df的“y”列。发生以下错误:TypeError:只有整数标量数组才能转换为标量索引 可以打印整个数据帧。这看起来像: 这是整个错误消息: 我认为这与numpy阵列有关。提前谢谢你!
我试着用pylot来模拟单摆。为此,我创建了类钟摆,在其中一个方法中,我不断得到相同的错误。 错误代码为: 文件“C:\Users\Lucas\Anaconda3\envs\Spyder\lib\site packages\numpy\core\fromnumeric.py”,第47行,在_wrapitresult=getattr(asarray(obj),method)中(*args,**kwd
我想从官方熊猫留档...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:只能将整数标量数组转换为标量索引 看起来够简单?不过我不明白。如何解决这个问题?谢谢你。 这个怎么样? 同样的错误。如何修复?
我看到的代码是: 不同变量的值是: ID: 欠条: 阈值: