使用numpy创建下列数组[1,1,2,3,4,5,6,1,1,6],找出数组中1元素的位置索引并输出索引(使用两种方法)。
时间: 2023-10-03 14:09:35 浏览: 56
方法一:
```python
import numpy as np
arr = np.array([1, 1, 2, 3, 4, 5, 6, 1, 1, 6])
idx = np.where(arr == 1)[0]
print(idx)
```
输出结果为:
```
[0 1 7 8]
```
方法二:
```python
import numpy as np
arr = np.array([1, 1, 2, 3, 4, 5, 6, 1, 1, 6])
idx = np.argwhere(arr == 1).flatten()
print(idx)
```
输出结果为:
```
[0 1 7 8]
```
两种方法都是利用了numpy的函数,其中`np.where`返回满足条件的元素的位置,而`np.argwhere`返回满足条件的元素的索引。不同之处在于,`np.where`返回的是一个元组,其中包含符合条件的元素的行索引和列索引(对于二维数组而言),而`np.argwhere`返回的是一个二维数组,其中每个一维数组表示符合条件的元素的索引。因此,为了输出一维数组形式的结果,我们需要使用`flatten()`函数将二维数组转为一维数组。
相关问题
用python使用numpy创建下列数组[1,1,2,3,4,5,6,1,1,6],找出数组中1元素的位置索引并输出索引(使用两种方法)。的代码
方法1:
```python
import numpy as np
# 创建数组
arr = np.array([1, 1, 2, 3, 4, 5, 6, 1, 1, 6])
# 使用 np.where 查找索引
indexes = np.where(arr == 1)[0]
# 输出索引
print("1元素的位置索引为:", indexes)
```
方法2:
```python
import numpy as np
# 创建数组
arr = np.array([1, 1, 2, 3, 4, 5, 6, 1, 1, 6])
# 使用循环查找索引
indexes = []
for i in range(len(arr)):
if arr[i] == 1:
indexes.append(i)
# 输出索引
print("1元素的位置索引为:", indexes)
```
两种方法都可以得到相同的结果:[0, 1, 7, 8]。其中 `np.where` 函数返回的是一个元组,第一个元素是一个一维数组,表示符合条件的元素的下标;第二个元素是一个空元组,表示这个数组只有一个维度。因此我们通过 `[0]` 取出了第一个元素,即符合条件的元素的下标。使用循环查找索引的方法比较简单,但是效率可能不如 `np.where` 函数高。
使用numpy 1. 数组的创建(创建全0数组,全1数组,随机数数组)
好的,使用 numpy 来创建数组有以下几种方式:
1. 创建全0数组:
```python
import numpy as np
# 创建一个 2x3 的全0数组
arr_zeros = np.zeros((2, 3))
print(arr_zeros)
```
输出:
```
[[0. 0. 0.]
[0. 0. 0.]]
```
2. 创建全1数组:
```python
import numpy as np
# 创建一个 2x3 的全1数组
arr_ones = np.ones((2, 3))
print(arr_ones)
```
输出:
```
[[1. 1. 1.]
[1. 1. 1.]]
```
3. 创建随机数数组:
```python
import numpy as np
# 创建一个 2x3 的随机数数组,数值范围在 [0, 1) 之间
arr_random = np.random.rand(2, 3)
print(arr_random)
```
输出:
```
[[0.04308462 0.06870817 0.81705054]
[0.09107386 0.91606406 0.12435251]]
```
除了 `np.zeros()`、`np.ones()` 和 `np.random.rand()` 之外,还有一些其他的创建数组的方法,例如:
- `np.arange()`:创建一个等差数列数组;
- `np.linspace()`:创建一个等间距数列数组;
- `np.eye()`:创建一个单位矩阵数组;
- `np.diag()`:创建一个对角矩阵数组等等。