numpy19题
题目列表
作业: 1、创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1
2、创建一个元素为从10到49的ndarray对象
3、将第2题的所有元素位置反转
4、使用np.random.random
创建一个10*10
的ndarray对象,并打印出最大最小元素
5、创建一个10*10
的ndarray对象,且矩阵边界全为1,里面全为0
6、创建一个每一行都是从0到4的5*5矩阵
7、创建一个范围在(0,1)之间的长度为12的等差数列
8、创建一个长度为10的随机数组并排序
9、创建一个长度为10的随机数组并将最大值替换为0
10、创建一个5*5
矩阵, 取其中的第三列进行排序?
11、给定一个4维矩阵,如何得到最后两维的和?
12、给定数组[1, 2, 3, 4, 5]
,如何得到在这个数组的每个元素之间插入3个0后的新数组?
13、给定一个二维矩阵,如何交换其中两行的元素?
14、创建一个100000长度的随机数组,使用两种方法对其求三次方,并比较所用时间
15、创建一个5*3
随机矩阵和一个3*2
随机矩阵,求矩阵积
16、矩阵的每一行的元素都减去该行的平均值
17、打印出以下函数(要求使用np.zeros创建8*8的矩阵):
1
2
3
4
5
6
7
8
[[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]]
18、正则化一个5*5
随机矩阵
正则的概念:假设a是矩阵中的一个元素,max/min
分别是矩阵元素的最大最小值,则正则化后a = (a - min)/(max - min)
19、实现快速和选择排序法
参考答案
1、创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于1
1
2
3
4
n = np.zeros(10)
display(n)
n[4] = 1
display(n)
2、创建一个元素为从10到49的ndarray对象
1
2
n = np.arange(10,50)
display(n)
3、将第2题的所有元素位置反转
1
2
n = n[::-1]
display(n)
4、使用np.random.random创建一个10*10的ndarray对象,并打印出最大最小元素
1
2
3
4
n = np.random.random((10, 10))
display(n)
print(n.max())
print(n.min())
5、创建一个10*10的ndarray对象,且矩阵边界全为1,里面全为0
1
2
3
4
5
n = np.zeros((10, 10))
n[[0, 9]] = 1
n[:, 0] = 1
n[:, 9] = 1
display(n)
6、创建一个每一行都是从0到4的5*5矩阵
方法1:
1
2
3
vec = np.arange(0,5)
n = np.repeat(vec, 5).reshape(5, 5).T
display(n)
方法2:
1
np.tile(np.arange(5), (5, 1))
7、创建一个范围在(0,1)之间的长度为12的等差数列
1
np.linspace(0, 1, num = 12)
8、创建一个长度为10的随机数组并排序
1
2
3
n = np.random.random((10,))
n = np.sort(n)
display(n)
9、创建一个长度为10的随机数组并将最大值替换为0
1
2
3
4
n = np.random.random((10,))
display(n)
n[n.argmax()] = 0
display(n)
10、创建一个5*5矩阵, 取其中的第三列进行排序?
1
2
3
4
n = np.random.random((5, 5))
display(n)
n[:, 2] = np.sort(n[:, 2])
display(n)
11、给定一个4维矩阵,如何得到最后两维的和?
1
2
3
n = np.random.random((2,2,2,2))
display(n)
np.sum(n, axis=(2, 3))
12、给定数组[1, 2, 3, 4, 5],如何得到在这个数组的每个元素之间插入3个0后的新数组?
1
2
3
4
n = np.array([1, 2, 3, 4, 5])
for i in range(1, len(n)):
n = np.insert(n, (i-1)*4+1, [0,0,0])
display(n)
13、给定一个二维矩阵,如何交换其中两行的元素?
1
2
3
4
n = np.arange(1, 10).reshape(3, 3)
display(n)
n = n[[1, 0, 2]] # 交换前2行
display(n)
14、创建一个100000长度的随机数组,使用两种方法对其求三次方,并比较所用时间
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
26
27
import time
n = np.random.random((100000,))
display(n)
print("n的形状:", n.shape)
n1 = n.copy()
n2 = n.copy()
# 方法1
def cube(x):
return x**3
time1 = time.time()
cube_vectorized = np.vectorize(cube)
n1 = cube_vectorized(n1)
time2 = time.time()
print("时间1:",time2-time1)
display(n1)
print("三次方之后,形状是:", n1.shape)
# 方法2:
time3 = time.time()
n2 = n2**3
n2 = np.array(n2)
time4 = time.time()
print("时间2:",time4-time3)
display(n2)
print("三次方之后,形状是:", n2.shape)
15、创建一个5*3
随机矩阵和一个3*2
随机矩阵,求矩阵积
1
2
3
4
5
n1 = np.random.random((5, 3))
n2 = np.random.random((3, 2))
n3 = n1@n2
display(n3)
print(n3.shape)
16、矩阵的每一行的元素都减去该行的平均值
1
2
3
4
5
n = np.arange(1, 10).reshape(3, 3)
display(n)
n_mean = n.mean(axis = 1, keepdims=True)
n = n - n_mean
display(n)
17、打印出以下函数(要求使用np.zeros创建8*8
的矩阵):
1
2
3
4
5
6
7
8
[[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]
[0 1 0 1 0 1 0 1]
[1 0 1 0 1 0 1 0]]
1
2
3
4
arr = np.zeros((8,8))
arr[1::2, ::2] = 1 # 奇数行,偶数列
arr[::2, 1::2] = 1 # 偶数行,奇数列
display(arr)
注:上面的代码利用的是切片:
arr[1::2, ::2] = 1
:1::2
: 从索引 1 开始,每隔一行选择一行(即选择奇数行:1, 3, 5, 7)。::2
: 从索引 0 开始,每隔一列选择一列(即选择偶数列:0, 2, 4, 6)。- 这行代码将奇数行偶数列的元素设置为 1。
18、正则化一个5*5随机矩阵
正则的概念:假设a是矩阵中的一个元素,max/min分别是矩阵元素的最大最小值,则正则化后a = (a - min)/(max - min)
1
2
3
4
5
a = np.arange(1, 26).reshape(5, 5)
display(a)
a = (a - a.min())/(a.max() - a.min())
display(a)
19、实现快速和选择排序法
快速排序:
1
2
3
4
5
6
7
8
9
10
11
def quickSort(n):
if n.size <= 1:
return n
pivot = n[n.size // 2]
left = n[n < pivot]
middle = n[n == pivot]
right = n[n > pivot]
return np.concatenate((quickSort(left), middle, quickSort(right)))
arr = np.array([4,3,6,2,9,1])
display(quickSort(arr))
选择排序:
1
2
3
4
5
6
7
8
9
10
def selectSort(n):
for i in range(n.size):
min_index = i
for j in range(i, n.size):
if n[j] < n[min_index]:
min_index = j
n[i], n[min_index] = n[min_index], n[i]
arr = np.array([4,3,6,2,9,1])
selectSort(arr)
display(arr)