练习
练习1
代码:
"""随机生成在10-20之间三维整数型数组m。并求出所有元素的和
输出(1)中数组每一列元素的最小值
输出(1)中数组每一行的平均数
"""
import numpy as np
# 随机数种子
np.random.seed(0)
# 三维数组(高3长3宽3) 轴0=3 轴1=3 轴2=3
m=np.random.randint(10,21,(3,3,3))
print("rand()数组\n",m)
# 所有元素和
m_sum=np.sum(m)
print("数组所有元素和为:",m_sum)
# 列最小值
l_min=np.min(m,1)
print("每列元素的最小值为:\n",l_min)
# 行平均数
h_avr=np.mean(m,0)
print("每行元素的平均数为:\n",h_avr)
运行结果:
D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\05 OpenCV\day1\day1-练习\练习1.py"
rand()数组
[[[15 10 13]
[13 17 19]
[13 15 12]]
[[14 17 16]
[18 18 20]
[11 16 17]]
[[17 18 11]
[15 19 18]
[19 14 13]]]
数组所有元素和为: 418
每列元素的最小值为:
[[13 10 12]
[11 16 16]
[15 14 11]]
每行元素的平均数为:
[[15.33333333 15. 13.33333333]
[15.33333333 18. 19. ]
[14.33333333 15. 14. ]]
进程已结束,退出代码为 0
练习2
代码:
""" 生成3行2列的全零数组b"""
import numpy as np
# zeros(shape, dtype=None, order='C', *args, **kwargs)全零数组
arr=np.zeros((3,2),"i1")
print("3行2列的全零数组:\n",arr)
运行结果:
D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\05 OpenCV\day1\day1-练习\练习2.py"
3行2列的全零数组:
[[0 0]
[0 0]
[0 0]]
进程已结束,退出代码为 0
练习3
代码:
""" 随机生成一个二维数组 a,大小为 4 行 6 列,元素为 0 到 99 的随机整数
输出(3)中数组的数据类型、维数、形状、元素总个数
"""
import numpy as np
np.random.seed(0)
arr=np.random.randint(0,100,(2,2))
print("随机生成一个2*2的二维数组:\n",arr)
print("数据类型:",arr.dtype)
print("维数:",arr.ndim)
print("形状:",arr.shape)
print("元素个数:",arr.size)
运行结果:
D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\05 OpenCV\day1\day1-练习\练习3.py"
随机生成一个2*2的二维数组:
[[44 47]
[64 67]]
数据类型: int32
维数: 2
形状: (2, 2)
元素个数: 4
进程已结束,退出代码为 0
练习4
代码:
""" 定义一个NumPy一维数组 d,元素为 1 到 10 的整数
获取(4)中数组d中间位置的元素,范围为第 4 个到第 7 个(索引从 0 开始计数)
获取(4)数组d中所有偶数位置的元素(从索引 1 开始,步长为 2)
"""
import numpy as np
# 一维数组
d=np.arange(1,11)
# 找到d的中间元素【4,5,6,7】
d_4_7=d[3:7]
print("d中间位置的元素",d_4_7)
# 找到d的所有偶数元素
d_even=d[1::2]
print("d中所有偶数位置的元素",d_even)
运行结果:
D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\05 OpenCV\day1\day1-练习\练习4.py"
d中间位置的元素 [4 5 6 7]
d中所有偶数位置的元素 [ 2 4 6 8 10]
进程已结束,退出代码为 0
练习5
代码:
"""
将一个有12个元素的一维整数数组,使用reshape方法将形状改为(2, 2, 3)
"""
import numpy as np
arr=np.arange(1,13)
print("初始一维数组:\n",arr)
# reshape()改变形状
re_arr=np.reshape(arr,(2,2,3))
print("修改后的数组:\n",re_arr)
运行结果:
D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\05 OpenCV\day1\day1-练习\练习5.py"
初始一维数组:
[ 1 2 3 4 5 6 7 8 9 10 11 12]
修改后的数组:
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
进程已结束,退出代码为 0
练习6
代码:
"""使用广播机制将一个形状为 (3, 1) 的数组与一个形状为 (3, 4) 的数组相乘。
对(6)题中计算结果进行一维度展开,并排序。
"""
import numpy as np
# 定义两个数组
arr1=np.array([[4],[2],[3]])
arr2=np.array([[1,2,8,9],[6,5,5,6],[5,6,7,8]])
# 数组相乘
arr=np.multiply(arr1,arr2)
print("数组相乘结果:\n",arr)
# 一维展开
arr3=arr.flatten()
print("一维展开结果:\n",arr3)
# 排序
arr4=np.sort(arr3)
print("排序结果:\n",arr4)
运行结果:
D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\05 OpenCV\day1\day1-练习\练习6.py"
数组相乘结果:
[[ 4 8 32 36]
[12 10 10 12]
[15 18 21 24]]
一维展开结果:
[ 4 8 32 36 12 10 10 12 15 18 21 24]
排序结果:
[ 4 8 10 10 12 12 15 18 21 24 32 36]
进程已结束,退出代码为 0
作业
作业1-3
代码:
"""生成一个2行3列随机整数二维数组a
使用Numpy方法对(1)中数组a进行整体求积
使用Numpy方法对(1)中数组a进行求每列最大值索引"""
import numpy as np
np.random.seed(0)
# 假设范围为(10,30)
a=np.random.randint(1,10,(2,3))
print("2行3列随机整数二维数组:\n",a)
# 整体求积 prod()
a2=np.prod(a)
print("整体求积:\n",a2)
# 求每列最大值的索引
print("最大值的索引:\n",np.argmax(a))
运行结果:
D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\05 OpenCV\day1\day1-作业\作业1.py"
2行3列随机整数二维数组:
[[6 1 4]
[4 8 4]]
整体求积:
3072
最大值的索引:
4
进程已结束,退出代码为 0
作业4-6
代码:
"""4. 定义一个NumPy一维数组 b,元素为 1 到 10 的整数
5. 获取(4)数组b中最后五个元素并以倒序的形式输出
6. 获取(4)数组b中第三个元素到最后一个元素的每两个元素(步长为 2)"""
import numpy as np
# 定义数组
b=np.arange(1,11)
print(b)
# 获取最后五个元素 并以倒序输出
b1=b[:4:-1]
print("倒序输出最后五个元素:\n",b1)
# 获取第三个元素(索引2)---最后(索引9) 步长2
b2=b[2:10:2]
print("从第三个--最后一个(步长2):\n",b2)
运行结果:
D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\05 OpenCV\day1\day1-作业\作业2.py"
[ 1 2 3 4 5 6 7 8 9 10]
倒序输出最后五个元素:
[10 9 8 7 6]
从第三个--最后一个(步长2):
[3 5 7 9]
进程已结束,退出代码为 0
作业7-8
代码:
"""7. 随机生成一个一维数组 d,大小为 19,元素为 0 到 199 的随机整数。
8. 输出(7)中数组 d 的数据类型、维数、形状、元素总个数。"""
import numpy as np
np.random.seed(0)
# 定义一维数组
d=np.random.randint(0,200,19)
print("随机一维数组:\n",d)
print("数据类型:",d.dtype)
print("维数:",d.ndim)
print("形状:",d.shape)
print("元素个数:",d.size)
运行结果:
D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\05 OpenCV\day1\day1-作业\作业7-8.py"
随机一维数组:
[172 47 117 192 67 195 103 9 21 36 87 70 88 140 58 193 39 87
174]
数据类型: int32
维数: 1
形状: (19,)
元素个数: 19
进程已结束,退出代码为 0
作业9-15
代码:
"""9. 生成一个范围在 11-21 之间,具有 2 行 3 列的随机浮点数数组。
10. 创建一个 4 行 5 列的全零数组并输出。
11. 创建一个 5 行 2 列的全一数组并输出。"""
import numpy as np
# 9 随机浮点数组
arr=np.random.uniform(11,21,(2,3))
print("随机浮点数组:\n",arr)
# 10 全零数组
arr1=np.zeros((4,5))
print("全零数组:\n",arr1)
# 11 全一数组
arr2=np.ones((5,2))
print("全一数组:\n",arr2)
"""12. 使用 NumPy 创建一个包含 8 个整数的数组,每个整数为 4。
13. 创建一个形状为 (6, 4) 的二维数组,所有元素均为 6。
14. 创建一个形状为 (3, 4) 的随机浮点数数组,数组元素在 0-4 之间。
15. 创建一个形状为 (4, 3, 2) 的全一三维数组。"""
# 12 整数数组
arr3=np.full((8,),4,"i1")
print("整数数组:\n",arr3)
# 13 二维数组
arr4=np.full((6,4),6)
print("二维数组:\n",arr4)
# 14 随机浮点数组
arr5=np.random.uniform(0,4,(3,4))
print("随机浮点数组:\n",arr5)
# 15 全一三维数组
arr6=np.ones((4,3,2))
print("全一三维数组:\n",arr6)
运行结果:
D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\05 OpenCV\day1\day1-作业\作业9-15.py"
随机浮点数组:
[[20.44880214 17.52852849 16.68005333]
[14.29815114 20.3553589 16.29047677]]
全零数组:
[[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0.]]
全一数组:
[[1. 1.]
[1. 1.]
[1. 1.]
[1. 1.]
[1. 1.]]
整数数组:
[4 4 4 4 4 4 4 4]
二维数组:
[[6 6 6 6]
[6 6 6 6]
[6 6 6 6]
[6 6 6 6]
[6 6 6 6]
[6 6 6 6]]
随机浮点数组:
[[2.55926076 3.85530625 0.89684079 1.11076391]
[0.50599024 3.00955865 1.53044449 0.77666119]
[1.8990573 0.20023804 0.04724835 1.47610706]]
全一三维数组:
[[[1. 1.]
[1. 1.]
[1. 1.]]
[[1. 1.]
[1. 1.]
[1. 1.]]
[[1. 1.]
[1. 1.]
[1. 1.]]
[[1. 1.]
[1. 1.]
[1. 1.]]]
进程已结束,退出代码为 0
作业16-25
代码:
"""16. 创建一个 6 行 3 列,均值为 110 的正态分布二维数组。
17. 生成一个 1 到 35 之间具有 18 个元素的等差整数数组。
18. 生成一个 6 行 2 列的二维数组,输出第二列的所有元素。
19. 创建一个形状为(2, 3)的NumPy数组,使用full方法将所有元素填充为值-1 ,输出数组。
"""
import numpy as np
np.random.seed(0)
# 16 正态分布
arr1=np.random.normal(110,size=(6,3))
print("正态分布二维数组",arr1)
# 17 等差整数数组
arr2=np.linspace(1,35,18,dtype="i1")
print("等差整数数组:\n",arr2)
# 18 二维数组
arr3=np.random.randint(1,100,(6,2))
print("二维数组:\n",arr3)
print("第二列所有元素:\n",arr3[:,1])
# 19 (2,3)的数组
arr4=np.full((2,3),-1)
print("全-1数组:\n",arr4)
"""20. 将一个 3 行 3 列的二维数组中所有大于 70 的元素设置为 5。
21. 将一个有 15 个元素的一维整数数组,变形为 3 行 5 列的二维数组。
22. 将一个 2 行 7 列的二维整数数组展平为一维数组并输出。
23. 生成一个0-20之间具有11个元素的随机整数数组,使用NumPy的sort函数对数组进行排序并输出。
24. 请使用NumPy的full函数创建一个形状为(3, 4)的二维数组,其中所有元素都填充为数字7,并将这个数组命名为arr。然后输出数组arr。
25. 请创建一个形状为 (5,) 的一维数组,所有元素均为 2,数据类型为int,并输出它。
"""
# 20 定义 3*3数组
arr5=np.array([[23,87,66],[77,92,1],[55,87,39]])
arr5[arr5>70]=5
print("修改后的数组:\n",arr5)
# 21 变换为二维数组
arr6=np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])
arr6_change=arr6.reshape((3,5))
print("转换成二维数组:\n",arr6_change)
# 22 展开为一维数组
arr7=np.array([[1,2,3,4,5,6,7],[8,9,10,11,12,13,14]])
arr7_change=arr7.flatten()
print("展开为一维数组:\n",arr7_change)
# 23 排序
arr8=np.random.randint(0,20,11)
print("排序后的数组:\n",np.sort(arr8))
# 24 填充7
arr=np.full((3,4),7)
print("全7数组:\n",arr)
# 25 一维数组
arr9=np.full((5,),2,dtype="i1")
print("满足条件的一维数组:\n",arr9)
运行结果:
D:\Python3.10\python.exe "C:\Users\dell\OneDrive\桌面\05 OpenCV\day1\day1-作业\作业16-25.py"
正态分布二维数组 [[111.76405235 110.40015721 110.97873798]
[112.2408932 111.86755799 109.02272212]
[110.95008842 109.84864279 109.89678115]
[110.4105985 110.14404357 111.45427351]
[110.76103773 110.12167502 110.44386323]
[110.33367433 111.49407907 109.79484174]]
等差整数数组:
[ 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35]
二维数组:
[[15 40]
[33 66]
[10 58]
[33 32]
[75 24]
[36 76]]
第二列所有元素:
[40 66 58 32 24 76]
全-1数组:
[[-1 -1 -1]
[-1 -1 -1]]
修改后的数组:
[[23 5 66]
[ 5 5 1]
[55 5 39]]
转换成二维数组:
[[ 1 2 3 4 5]
[ 6 7 8 9 10]
[11 12 13 14 15]]
展开为一维数组:
[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
排序后的数组:
[ 0 0 2 4 4 5 6 8 15 17 18]
全7数组:
[[7 7 7 7]
[7 7 7 7]
[7 7 7 7]]
满足条件的一维数组:
[2 2 2 2 2]
进程已结束,退出代码为 0