!、创建一个5阶魔方数组A,执行下列操作: (1) 将数组A中单下标序号7,8,9,10转专换为全下标序 号 (2) 荻取A的4行3列元素 (3) 荻取A的第12个元素 (4) 获取位于“2,4行和3,5列交叉位置上的子数组” (5) 获取1,3行全部元素构成的子数组 (6) 访问第3,8,18号元素,输出结果分别为行数组、列数组 (7)把2,4行和3,5列交叉位置上的子数组元素置为 1,生成的新数组记为B (8) 把B中小于等于5的元素设置为“非数NaN”
时间: 2023-05-23 17:02:14 浏览: 122
很高兴能够为您解决问题!以下是针对您的第一个问题的答案:
(1) 下面是将数组A的单下标序号7,8,9,10转换为全下标序号的代码:
索引变换前: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
索引变换后: [(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5)]
代码实现如下:
```python
import numpy as np
A = np.zeros((5,5))
A[1,1] = 1
A[1,2] = 2
A[1,3] = 3
A[1,4] = 4
A[1,5] = 5
A[2,1] = 6
A[2,2] = 7
A[2,3] = 8
A[2,4] = 9
A[2,5] = 10
A[3,1] = 11
A[3,2] = 12
A[3,3] = 13
A[3,4] = 14
A[3,5] = 15
A[4,1] = 16
A[4,2] = 17
A[4,3] = 18
A[4,4] = 19
A[4,5] = 20
A[5,1] = 21
A[5,2] = 22
A[5,3] = 23
A[5,4] = 24
A[5,5] = 25
# 定义转换函数
def transform_index(index):
row = (index - 1) // A.shape[1] + 1
col = (index - 1) % A.shape[1] + 1
return (row, col)
# 将单下标序号7,8,9,10转换为全下标序号
new_indices = [transform_index(i) for i in [7, 8, 9, 10]]
print(new_indices)
```
(2) 以下是获取A的4行3列元素的代码:
```python
# 获取A的4行3列元素
sub_array_1 = A[3:7, 2:3]
print(sub_array_1)
```
(3) 以下是获取A的第12个元素的代码(即以行优先方式对A进行展开后的第12个元素):
```python
# 获取A的第12个元素
flat_A = A.ravel()
ele_12 = flat_A[11]
print(ele_12)
```
(4) 以下是获取位于“2,4行和3,5列交叉位置上的子数组”的代码:
```python
# 获取位于“2,4行和3,5列交叉位置上的子数组”
sub_array_2 = A[np.ix_([2, 4], [3, 5])]
print(sub_array_2)
```
(5) 以下是获取1,3行全部元素构成的子数组的代码:
```python
# 获取1,3行全部元素构成的子数组
sub_array_3 = A[[0,2], :]
print(sub_array_3)
```
(6) 以下是访问第3,8,18号元素并输出结果分别为行数组、列数组的代码:
```python
# 访问第3,8,18号元素,输出结果分别为行数组、列数组
elements = A[[0, 1, 2], [2, 4, 3]]
print(elements)
print(elements.reshape(-1, 1))
```
(7) 以下是将2,4行和3,5列交叉位置上的子数组元素置为1,生成的新数组记为B的代码:
```python
# 将2,4行和3,5列交叉位置上的子数组元素置为1,生成的新数组记为B
B = A.copy()
B[np.ix_([1, 3], [2, 4])] = 1
print(B)
```
(8) 以下是将B中小于等于5的元素设置为“非数NaN”的代码:
```python
# 把B中小于等于5的元素设置为“非数NaN”
B[B <= 5] = np.nan
print(B)
```
希望这些代码能够帮到您!
阅读全文