numpy 练习100题(1~40)
1. 导入numpy库并取别名为np
import numpy as np
2. 打印输出numpy的版本和配置信息
print(np.__version__)
np.show_config()
3. 创建长度为10的零向量
a = np.zeros(10)
print(a)
4. 获取数组所占内存大小
a = np.zeros(10)
print(a.size * a.itemsize)
5. 怎么用命令行获取numpy add函数的文档说明
print(np.info(np.add))
6. 创建一个长度为10的零向量,并把第五个值赋值为1
a = np.zeros(10)
a[4] = 1
print(a)
7. 创建一个值域为10到49的向量
a = np.arange(10, 50)
print(a)
8. 将一个向量进行反转(第一个元素变为最后一个元素)
a = np.arange(10, 50)
a = a[::-1]
print(a)
9. 创建一个3x3的矩阵,值域为0到8
a = np.arange(0, 9).reshape((3, 3))
print(a)
10. 从数组[1, 2, 0, 0, 4, 0]中找出非0元素的位置索引
a = np.array([1, 2, 0, 0, 3])
b = np.nonzero(a)
print(b)
11. 创建一个3x3的单位矩阵
a = np.eye(3)
print(a)
12. 创建一个3x3x3的随机数组
a = np.random.random((3, 3, 3))
print(a)
13. 创建一个10x10的随机数组,并找出该数组中的最大值与最小值
a = np.random.random((10, 10, 10))
print(np.amax(a))
print(np.amin(a))
14. 创建一个长度为30的随机向量,并求它的平均值
a = np.random.random((10, 10, 10))
print(np.mean(a))
15. 创建一个2维数组,该数组边界值为1,内部的值为0
a = np.ones((3, 4))
a[1:-1, 1:-1] = 0
print(a)
16. 如何用0来填充一个数组的边界?
a = np.ones((3, 4))
a = np.pad(a, pad_width=1, mode='constant', constant_values=0)
print(a)
17. 下面表达式运行的结果是什么?
print(0 * np.nan)
print(np.nan == np.nan)
print(np.inf > np.nan)
print(np.nan - np.nan)
print(0.3 == 3 * 0.1)
![](https://img-blog.csdnimg.cn/d956f533a9364128af5fe5fcebd783b6.png#pic_center)
18. 创建一个5x5的矩阵,且设置值1, 2, 3, 4在其对角线下面一行
a = np.diag([1, 2, 3, 4], k=-1)
print(a)
19. 创建一个8x8的国际象棋棋盘矩阵(黑块为0,白块为1)
a = np.zeros((8, 8))
a[::2, 1::2] = 1
a[1::2, ::2] = 1
print(a)
20. 思考一下形状为(6, 7, 8)的数组的形状,且第100个元素的索引(x, y, z)分别是什么?
print(np.unravel_index(100, (6, 7, 8)))
21. 用tile函数创建一个8x8的棋盘矩阵
print(np.tile([[1, 0], [0, 1]], (4, 4)))
22. 对5x5的随机矩阵进行归一化
a = np.random.random((5, 5))
a = (a-np.min(a))/np.ptp(a)
print(a)
23. 创建一个dtype来表示颜色(RGBA)
rgba = np.dtype([('R', 'u1'), ('G', 'u1'), ('B', 'u1'), ('A', 'u1')])
a = np.array((255, 255, 1, 0), dtype=rgba)
print(a)
24. 一个5x3的矩阵和一个3x2的矩阵相乘,结果是什么?
print(np.dot(np.ones((5, 3)), np.ones((3, 2))))
![在这里插入图片描述](https://img-blog.csdnimg.cn/a7ffd9ca42724fe68496b48cd2228bb5.png#pic_center)
25. 给定一个一维数组把它索引从3到8的元素求相反数
a = np.arange(1, 13)
a[3:8] = np.negative(a[3:8])
print(a)
26. 下面的脚本的结果是什么?
print(sum(range(5), -1))
from numpy import *
print(sum(range(5), -1))
![在这里插入图片描述](https://img-blog.csdnimg.cn/69dcbd1183be424d8319568681ebe7fe.png#pic_center)
27. 关于整形的向量Z下面哪些表达式正确?
Z = np.arange(5)
print(Z**Z)
print(2 << Z >> 2)
print(Z <- Z)
print(1j*Z)
print(Z/1/1)
print(Z<Z>Z)
![在这里插入图片描述](https://img-blog.csdnimg.cn/353a6f76dbb04dbfa238d78b4055c4cd.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/d302e7fb829d4d2bb5dcb9972ed31bda.png#pic_center)
28. 下面表达式的结果分别是什么?
print(np.array(0) / np.array(0))
print(np.array(0) // np.array(0))
print(np.array([np.nan]).astype(int).astype(float))
![在这里插入图片描述](https://img-blog.csdnimg.cn/11126681acf0434292384b3af6c6531b.png#pic_center)
29. 如何从零位开始舍入浮点数组?
a = np.random.uniform(-10, +10, 10)
b = np.ceil(np.abs(a))
b = np.copysign(b, a)
print(b)
30. 如何找出两个数组公共的元素?
a = np.random.randint(1, 10, 10)
b = np.random.randint(1, 10, 10)
print(np.intersect1d(a, b))
31. 如何忽略numpy的警告信息?
defaults = np.seterr(all="ignore")
Z = np.ones(1) / 0
32. 下面的表达式是否为真?
print(np.sqrt(-1) == np.emath.sqrt(-1))
![在这里插入图片描述](https://img-blog.csdnimg.cn/ede4d437c95244dfa5e4d71ac035a9bb.png#pic_center)
print(np.sqrt(-1))
print(emath.sqrt(-1))
![在这里插入图片描述](https://img-blog.csdnimg.cn/72327e2b0fe748ccbba4f444df25e02d.png#pic_center)
33. 如何获得昨天,今天和明天的日期?
yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')
today = np.datetime64('today', 'D')
tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D')
34. 怎么获得2016年7月的所有日期?
days = np.arange("2016-07", "2016-08", dtype="datetime64[D]")
print(days)
35. 如何计算 ((A+B)*(-A/2)) (不使用中间变量)?
A = np.ones(3) * 1
B = np.ones(3) * 2
print(np.add(A, B, out=B))
print(np.divide(A, 2, out=A))
print(np.negative(A, out=A))
print(np.multiply(A, B, out=A))
36. 用5种不同的方法提取随机数组中的整数部分
a = np.random.uniform(0, 10, 10)
print(np.ceil(a))
print(np.floor(a))
print(a // 1)
print(a - a % 1)
print(np.trunc(a))
print(a.astype(int))
37. 创建一个5x5的矩阵且每一行的值范围为从0到4
a = np.arange(0, 5)
a = np.resize(a, (5, 5))
print(a)
38. 如何用一个生成10个整数的函数来构建数组
genter = (x for x in range(10))
a = np.fromiter(genter, dtype=float, count=-1)
print(a)
39. 创建一个大小为10的向量, 值域为0到1,不包括0和1
a = np.linspace(0, 1, 12)[1:-1]
print(a)
40. 创建一个大小为10的随机向量,并把它排序
a = np.random.random(10)
print(np.sort(a))