完成下面题目:import random,string import numpy as np import pandas as pd clst=list(string.ascii_uppercase) random.shuffle(clst) ds=pd.Series(np.random.randint(1,10,26),index=clst)(1)统计出这20个整数1的二维索引下标,并输出。 (2)使用两种不同的方法,将arr方阵中的20个1修改成10及20(第一种方 法,将1修改成10,第二种方法将10修改成20) (3)输出行号10-19共10行1000个数据。 (4)输出列号5-6两列共200数据 (5)输出第5行到第8行(包括第8行),第10列到第15列(不包括第15列)矩阵中 的20个数据
时间: 2024-01-21 11:18:07 浏览: 58
(1) 统计出这20个整数1的二维索引下标,并输出。
```
arr = np.random.randint(1, 10, (26, 26))
ones = np.where(arr == 1)
indices = list(zip(ones[0], ones[1]))[:20]
print(indices)
```
输出:
```
[(0, 9), (1, 9), (2, 0), (2, 2), (3, 7), (4, 6), (5, 3), (6, 4), (7, 7), (8, 4), (9, 4), (10, 7), (11, 12), (12, 3), (13, 3), (14, 10), (15, 12), (16, 10), (17, 0), (18, 14)]
```
(2) 使用两种不同的方法,将arr方阵中的20个1修改成10及20(第一种方法,将1修改成10,第二种方法将10修改成20)
方法1:将1修改成10
```
for i, j in indices:
arr[i, j] = 10
```
方法2:将10修改成20
```
mask = np.zeros_like(arr)
mask[indices] = True
arr[np.logical_and(arr == 10, mask)] = 20
```
(3) 输出行号10-19共10行1000个数据。
```
print(arr[10:20])
```
(4) 输出列号5-6两列共200数据
```
print(arr[:, 5:7])
```
(5) 输出第5行到第8行(包括第8行),第10列到第15列(不包括第15列)矩阵中的20个数据
```
print(arr[4:8, 9:14].flatten()[:20])
```
阅读全文