下面是一些较为复杂的NumPy练习题及其答案:
1.创建一个形状为(5, 5)的二维数组,其中每个元素的值等于其行索引加上其列索引的和。
2.创建一个大小为10的随机数组,并找到其中前三个最大值的索引。
3.创建一个大小为10的随机数组,并将其中所有大于0.5的元素替换为1,其余元素替换为0。
4.给定一个一维数组,找出所有连续重复的元素,并将它们替换为0。
练习1:
创建一个形状为(5, 5)的二维数组,其中每个元素的值等于其行索引加上其列索引的和。
import numpy as np
arr = np.fromfunction(lambda i, j: i + j, (5, 5), dtype=int)
print(arr)
输出结果:
[[0 1 2 3 4]
[1 2 3 4 5]
[2 3 4 5 6]
[3 4 5 6 7]
[4 5 6 7 8]]
练习2:
创建一个大小为10的随机数组,并找到其中前三个最大值的索引。
import numpy as np
arr = np.random.rand(10)
indices = np.argsort(arr)[-3:]
print("Array:", arr)
print("Indices of top 3 max values:", indices)
输出结果类似:
Array: [0.69663739 0.33775502 0.75378663 0.57768405 0.28549115 0.43134244
0.55627119 0.49357289 0.21644175 0.73342044]
Indices of top 3 max values: [2 9 0]
练习3:
创建一个大小为10的随机数组,并将其中所有大于0.5的元素替换为1,其余元素替换为0。
import numpy as np
arr = np.random.rand(10)
arr[arr > 0.5] = 1
arr[arr <= 0.5] = 0
print(arr)
输出结果类似:
[0. 0. 0. 0. 0. 1. 1. 1. 1. 1.]
练习4:
给定一个一维数组,找出所有连续重复的元素,并将它们替换为0。
import numpy as np
arr = np.array([1, 2, 2, 3, 4, 4, 4, 5, 6, 6, 7])
mask = np.concatenate(([False], arr[1:] == arr[:-1]))
arr[mask] = 0
print(arr)
输出结果:[1 2 0 3 4 0 0 5 6 0 7]
这些练习题考验了对NumPy数组操作和高级函数的理解。通过完成这些练习,可以提升对NumPy的熟练度,并巩固对其功能和特性的理解。