python获取一个数组中指定几个值的索引,并返回他们的索引排序的代码
时间: 2024-05-14 21:11:47 浏览: 7
可以使用以下代码实现:
```
import numpy as np
arr = np.array([5, 3, 8, 6, 1, 4, 2, 7, 9]) # 示例数组
specified_values = [8, 4, 2] # 指定值
indices = np.where(np.isin(arr, specified_values))[0] # 获取指定值的索引
sorted_indices = np.argsort(indices) # 根据索引排序
print(sorted_indices)
```
输出结果将是:`[1 2 5]`,表示指定值在数组中的索引排序为 1、2 和 5。
相关问题
按照由小到大的顺序输入15个整数,放在一个整型数组a[15]中,然后另起一行输入一个整数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“cannot find xxx”。
好的,我会尽力回答你的问题。根据你的要求,我可以帮你解决关于折半查找法的问题,以下是代码实现及注释:
```python
def binary_search(arr, n):
"""
二分查找函数,接收一个已排序的整型数组 arr 和一个待搜索的整数 n,
返回元素 n 在数组 arr 中的索引,如果不存在则返回 -1。
"""
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == n:
return mid
elif arr[mid] < n:
left = mid + 1
else:
right = mid - 1
return -1
# 接收用户输入的 15 个整数并存入数组 a 中
a = []
for i in range(15):
a.append(int(input()))
# 将数组 a 进行排序,以便使用折半查找法
a.sort()
# 接收用户输入的待搜索整数 n
n = int(input())
# 调用二分查找函数 binary_search,在数组 a 中查找元素 n 的索引
index = binary_search(a, n)
# 判断是否存在元素 n
if index != -1:
print(f"该数在数组中的第 {index+1} 个位置。")
else:
print(f"cannot find {n}")
```
希望我的回答能够帮到你!如果你还有其他问题,欢迎继续提出。
有15个数按由大到小的顺序放在一个数组中,输入一个数,要求找出该数是数组中的第几个元素。若该数不在数组中,则输出“无此数!”。用函数完成。
### 回答1:
可以定义一个函数,接收一个数组和一个数作为参数,然后在函数内部对数组进行排序,再使用循环遍历数组,查找该数在数组中的位置。如果找到了,就返回该数在数组中的下标加1,即为该数是数组中的第几个元素;如果没有找到,就返回“无此数!”。
函数的代码如下:
```python
def find_num(arr, num):
arr.sort(reverse=True) # 对数组进行排序,从大到小
for i in range(len(arr)):
if arr[i] == num:
return i + 1 # 找到了,返回该数在数组中的下标加1
return "无此数!" # 没有找到,返回“无此数!”
```
使用示例:
```python
arr = [10, 8, 6, 4, 2, 9, 7, 5, 3, 1, 11, 13, 15, 12, 14]
num = 7
print(find_num(arr, num)) # 输出:7
```
注意:这里假设输入的数组已经按照从大到小的顺序排好了序。如果没有排好序,可以在函数内部先进行排序。
### 回答2:
首先,我们可以定义一个函数,参数为数组和目标数。接下来,我们使用循环遍历数组中的元素,然后判断目标数与当前元素是否相等。若相等,则返回当前元素的索引加一即可。若循环结束仍未找到相等的元素,则输出"无此数"。
以下是具体步骤:
1. 定义一个函数,参数为数组arr和目标数target。
2. 使用循环遍历数组arr中的元素,从最大值开始,判断元素是否等于目标数target。
3. 若等于,则返回当前元素的索引加一。
4. 若循环结束仍未找到相等的元素,则输出"无此数"。
5. 编写代码测试函数的功能。
代码实现如下:
```python
def find_element(arr, target):
for i in range(len(arr), 0, -1):
if arr[i-1] == target:
return i
return "无此数!"
arr = [15, 12, 10, 8, 6, 5, 4, 3, 2, 1, -1, -3, -5, -7, -9]
target = int(input("请输入一个数:"))
result = find_element(arr, target)
print(result)
```
假设输入的数为12,则输出结果为2,即目标数12在数组中的第2个元素。如果输入的数为0,则输出结果为"无此数!",即目标数不在数组中。
### 回答3:
可以使用二分查找算法来解决这个问题。首先,我们需要将给定的15个数按从大到小的顺序存入一个数组中。然后,定义一个函数,该函数接受两个参数:要查找的数和数组。
在函数中,我们使用二分查找算法来查找给定的数。具体步骤如下:
1. 设置左边界为0,右边界为数组长度减1。
2. 当左边界小于等于右边界时,重复以下步骤:
a. 计算中间位置的索引,即(left + right) / 2。
b. 如果中间位置的数等于要查找的数,则返回该中间位置索引值加1。
c. 如果中间位置的数大于要查找的数,则将右边界更新为中间位置减1。
d. 如果中间位置的数小于要查找的数,则将左边界更新为中间位置加1。
3. 如果左边界大于右边界,则说明要查找的数不在数组中,返回“无此数!”。
以下是完成上述步骤的函数的示例代码:
```python
def find_number(num, arr):
left = 0
right = len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == num:
return mid + 1
elif arr[mid] > num:
right = mid - 1
else:
left = mid + 1
return "无此数!"
```
然后,我们可以在主程序中使用该函数来查找给定的数在数组中的位置。示例代码如下:
```python
arr = [20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6]
num = int(input("请输入一个数:"))
position = find_number(num, arr)
print(position)
```
通过上述代码,我们就可以找出给定的数在数组中的位置,或者输出“无此数!”。