--------------------------------------------------------------------------- TypeError Traceback (most recent call last) /tmp/ipykernel_119/2100550380.py in <cell line: 9>() 7 8 # 取数组中排序后的后10个元素,即前10个最大值 ----> 9 top_10 = my_arr[sorted_idx[-20:]] 10 11 print(top_10) TypeError: only integer scalar arrays can be converted to a scalar index
时间: 2023-08-15 17:32:09 浏览: 109
出现这个错误的原因是在对数组进行切片时,使用了一个数组作为切片的索引,而数组作为索引时必须是整数类型的标量值,不能是数组。因此,可以将 `sorted_idx[-20:]` 改为 `sorted_idx[-10:]`,这样就可以获取前10个最大值了。
以下是修改后的示例代码:
```
import numpy as np
my_arr = np.array([1, 5, 3, 9, 8, 2, 7, 11, 6, 4, 10, 12, 15, 13, 14])
# 使用argsort函数对数组进行排序,并返回数组中元素排序后的下标
sorted_idx = np.argsort(my_arr)
# 取数组中排序后的后10个元素,即前10个最大值
top_10 = my_arr[sorted_idx[-10:]]
print(top_10)
```
输出结果为:
```
[ 6 7 8 10 11 12 13 14 15]
```
阅读全文