numpy 练习100题(1~40)

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)

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))))

在这里插入图片描述

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))

在这里插入图片描述

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)

在这里插入图片描述在这里插入图片描述

28. 下面表达式的结果分别是什么?

print(np.array(0) / np.array(0))
print(np.array(0) // np.array(0))
print(np.array([np.nan]).astype(int).astype(float))

在这里插入图片描述

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))

在这里插入图片描述

print(np.sqrt(-1))
print(emath.sqrt(-1))

在这里插入图片描述

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))
  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值