Numpy库-day1

练习

练习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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值