100道练习,带你玩转Numpy之1-20
来源:https://www.kesci.com/mw/project/59f29f67c5f3f5119527a2cc
1. 导入numpy
库并简写为 np
1 import numpy as np
2. 打印numpy
的版本和配置说明
1 print(np.__version__) 2 np.show_config()
3. 创建一个长度为10的空向量
1 Z = np.zeros(10) 2 print(Z)
4. 如何找到任何一个数组的内存大小?
1 z = np.zeros((10,10)) 2 print('%d bytes' %(z.size * z.itemsize))
注:itemsize输出array元素的字节数。ndarray.size 返回数组的大小,即shape中的乘积。
5. 如何从命令行得到numpy
中add
函数的说明文档?
1 np.info(np.add)
6. 创建一个长度为10并且除了第五个值为1的空向量
1 z = np.zeros(10) 2 z[4] = 1 3 print(z)
7. 创建一个值域范围从10到49的向量
1 z = np.arange(10,50) 2 print(z)
8. 反转一个向量(第一个元素变为最后一个)
1 z = np.arange(5) 2 z = z[::-1] 3 print(z)
9. 创建一个 3x3
并且值从0到8的矩阵
1 z = np.arange(9).reshape(3,3) 2 print(z)
10. 找到数组[1,2,0,0,4,0]
中非0元素的位置索引
1 z = np.nonzero([1,2,0,0,4,0]) 2 print(z)
11. 创建一个 3x3
的单位矩阵
1 z = np.eye(3) 2 print(z)
12. 创建一个 3x3x3
的随机数组
1 z = np.random.random((3,3,3)) 2 print(z)
注:Python中的random模块用于生成随机数。
13. 创建一个 10x10
的随机数组并找到它的最大值和最小值
1 z = np.random.random((10,10)) 2 zmin, zmax = z.min(), z.max() 3 print(zmin, zmax)
14. 创建一个长度为30的随机向量并找到它的平均值
1 z = np.random.random(30) 2 zm = z.mean() 3 print(zm)
15. 创建一个二维数组,其中边界值为1,其余值为0
1 z = np.ones((6,6)) 2 z[1:-1,1:-1] = 0 3 print(z)
1 [[1. 1. 1. 1. 1. 1.] 2 [1. 0. 0. 0. 0. 1.] 3 [1. 0. 0. 0. 0. 1.] 4 [1. 0. 0. 0. 0. 1.] 5 [1. 0. 0. 0. 0. 1.] 6 [1. 1. 1. 1. 1. 1.]]
16. 对于一个存在在数组,如何添加一个用0填充的边界?
1 z = np.ones((5,5)) 2 z = np.pad(z,pad_width=1, mode='constant', constant_values=0) 3 print(z)
1 [[0. 0. 0. 0. 0. 0. 0.] 2 [0. 1. 1. 1. 1. 1. 0.] 3 [0. 1. 1. 1. 1. 1. 0.] 4 [0. 1. 1. 1. 1. 1. 0.] 5 [0. 1. 1. 1. 1. 1. 0.] 6 [0. 1. 1. 1. 1. 1. 0.] 7 [0. 0. 0. 0. 0. 0. 0.]]
注:pad填充函数,https://blog.csdn.net/zenghaitao0128/article/details/78713663
17. 以下表达式运行的结果分别是什么?
1 print(0 * np.nan) 2 print(np.nan == np.nan) 3 print(np.inf > np.nan) 4 print(np.nan - np.nan) 5 print(0.3 == 3 * 0.1)
1 nan 2 False 3 False 4 nan 5 False
注:要想直接赋值nan和inf需要修改数组的数据类型为float
nan和inf的区别参考:https://www.cnblogs.com/wt7018/p/11968326.html
18. 创建一个 5x5
的矩阵,并设置值1,2,3,4落在其对角线下方位置
1 z = np.diag(1+np.arange(4), k=-1) 2 print(z)
1 [[0 0 0 0 0] 2 [1 0 0 0 0] 3 [0 2 0 0 0] 4 [0 0 3 0 0] 5 [0 0 0 4 0]]
注:https://blog.csdn.net/qq_35277038/article/details/80766746
https://blog.csdn.net/porly/article/details/7872313?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control
19. 创建一个8x8
的矩阵,并且设置成棋盘样式
1 Z = np.zeros((8,8),dtype=int) 2 Z[1::2,::2] = 1 3 Z[::2,1::2] = 1 4 print(Z)
1 [[0 1 0 1 0 1 0 1] 2 [1 0 1 0 1 0 1 0] 3 [0 1 0 1 0 1 0 1] 4 [1 0 1 0 1 0 1 0] 5 [0 1 0 1 0 1 0 1] 6 [1 0 1 0 1 0 1 0] 7 [0 1 0 1 0 1 0 1] 8 [1 0 1 0 1 0 1 0]]
注: ::2表示隔行采样
20. 考虑一个 (6,7,8) 形状的数组,其第100个元素的索引(x,y,z)是什么?
1 print(np.unravel_index(100,(6,7,8)))
1 (1, 5, 4)
注:https://blog.csdn.net/Amanda_python/article/details/109180881?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control