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. 如何从命令行得到numpyadd函数的说明文档?

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

原文地址:https://www.cnblogs.com/vvzhang/p/14342324.html