100个Numpy练习【2】
时间:2022-04-29
本文章向大家介绍100个Numpy练习【2】,主要内容包括21. 用tile函数创建一个8×8的棋盘矩阵(★☆☆)、22. 对5×5的随机矩阵进行归一化 (★☆☆)、23. 创建一个dtype来表示颜色(RGBA) (★☆☆)、24. 一个5×3的矩阵和一个3×2的矩阵相乘,结果是什么?(★☆☆)、25. 给定一个一维数组把它索引从3到8的元素进行取反 (★☆☆)、26. 下面的脚本的结果是什么? (★☆☆)、27. 关于整形的向量Z下面哪些表达式正确? (★☆☆)、28. 下面表达式的结果分别是什么? (★☆☆)、29. 如何从零位开始舍入浮点数组? (★☆☆)、30. 如何找出两个数组公共的元素? (★☆☆)、31. 如何忽略numpy的警告信息(不推荐)? (★☆☆)、32. 下面的表达式是否为真? (★☆☆)、33. 如何获得昨天,今天和明天的日期? (★☆☆)、34. 怎么获得所有与2016年7月的所有日期? (★★☆)、35. 如何计算 ((A+B)*(-A/2)) (不使用中间变量)? (★★☆)、36. 用5种不同的方法提取随机数组中的整数部分 (★★☆)、37. 创建一个5×5的矩阵且每一行的值范围为从0到4 (★★☆)、38. 如何用一个生成10个整数的函数来构建数组 (★☆☆)、39. 创建一个大小为10的向量, 值域为0到1,不包括0和1 (★★☆)、40. 创建一个大小为10的随机向量,并把它排序 (★★☆)、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
- 翻译:YingJoy
- 网址: https://www.yingjoy.cn/
- 来源: https://github.com/rougier/numpy-100
- 全文: https://github.com/yingzk/100_numpy_exercises
Numpy是Python做数据分析必须掌握的基础库之一,非常适合刚学习完Numpy基础的同学,完成以下习题可以帮助你更好的掌握这个基础库。
Python版本:Python 3.6.2
Numpy版本:Numpy 1.13.1
21. 用tile函数创建一个8×8的棋盘矩阵(★☆☆)
(提示: np.tile)
Z = np.tile(np.array([[1, 0], [0, 1]]), (4, 4))
print (Z)
22. 对5×5的随机矩阵进行归一化 (★☆☆)
(提示: (x – min) / (max – min))
Z = np.random.random((5, 5))
Zmax, Zmin = Z.max(), Z.min()
Z = (Z-Zmin)/(Zmax-Zmin)
print (Z)
23. 创建一个dtype来表示颜色(RGBA) (★☆☆)
(提示: np.dtype)
color = np.dtype([("r", np.ubyte, 1),
("g", np.ubyte, 1),
("b", np.ubyte, 1),
("a", np.ubyte, 1)])
c = np.array((255, 255, 255, 1), dtype=color)
print (c)
Out[80]:
array((255, 255, 255, 1),
dtype=[('r', 'u1'), ('g', 'u1'), ('b', 'u1'), ('a', 'u1')])
24. 一个5×3的矩阵和一个3×2的矩阵相乘,结果是什么?(★☆☆)
(提示: np.dot | @)
Z = np.dot(np.zeros((5, 3)), np.zeros((3, 2)))
# 或者
Z = np.zeros((5, 3))@ np.zeros((3, 2))
print (Z)
25. 给定一个一维数组把它索引从3到8的元素进行取反 (★☆☆)
(提示: >, <=)
Z = np.arange(11)
Z[(3 <= Z) & (Z < 8)] *= -1
print (Z)
26. 下面的脚本的结果是什么? (★☆☆)
(提示: np.sum)
# Author: Jake VanderPlas # 结果
print(sum(range(5),-1)) 9
from numpy import *
print(sum(range(5),-1)) 10 #numpy.sum(a, axis=None)
27. 关于整形的向量Z下面哪些表达式正确? (★☆☆)
Z**Z True
2 << Z >> 2 False
Z <- Z True
1j*Z True #复数
Z/1/1 True
Z<Z>Z False
28. 下面表达式的结果分别是什么? (★☆☆)
np.array(0) / np.array(0) nan
np.array(0) // np.array(0) 0
np.array([np.nan]).astype(int).astype(float) -2.14748365e+09
29. 如何从零位开始舍入浮点数组? (★☆☆)
(提示: np.uniform, np.copysign, np.ceil, np.abs)
# Author: Charles R Harris
Z = np.random.uniform(-10,+10,10)
print (np.copysign(np.ceil(np.abs(Z)), Z))
30. 如何找出两个数组公共的元素? (★☆☆)
(提示: np.intersect1d)
Z1 = np.random.randint(0, 10, 10)
Z2 = np.random.randint(0, 10, 10)
print (np.intersect1d(Z1, Z2))
31. 如何忽略numpy的警告信息(不推荐)? (★☆☆)
(提示: np.seterr, np.errstate)
# Suicide mode on
defaults = np.seterr(all="ignore")
Z = np.ones(1) / 0
# Back to sanity
_ = np.seterr(**defaults)
# 另一个等价的方式, 使用上下文管理器(context manager)
with np.errstate(divide='ignore'):
Z = np.ones(1) / 0
32. 下面的表达式是否为真? (★☆☆)
(提示: 虚数)
np.sqrt(-1) == np.emath.sqrt(-1) Faslse
33. 如何获得昨天,今天和明天的日期? (★☆☆)
(提示: np.datetime64, np.timedelta64)
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月的所有日期? (★★☆)
(提示: np.arange(dtype=datetime64[’D’]))
Z = np.arange('2016-07', '2016-08', dtype='datetime64[D]')
print (Z)
35. 如何计算 ((A+B)*(-A/2)) (不使用中间变量)? (★★☆)
(提示: np.add(out=), np.negative(out=), np.multiply(out=), np.divide(out=))
A = np.ones(3) * 1
B = np.ones(3) * 1
C = np.ones(3) * 1
np.add(A, B, out=B)
np.divide(A, 2, out=A)
np.negative(A, out=A)
np.multiply(A, B, out=A)
36. 用5种不同的方法提取随机数组中的整数部分 (★★☆)
(提示: %, np.floor, np.ceil, astype, np.trunc)
Z = np.random.uniform(0, 10, 10)
print (Z - Z % 1)
print (np.floor(Z))
print (np.cell(Z)-1)
print (Z.astype(int))
print (np.trunc(Z))
37. 创建一个5×5的矩阵且每一行的值范围为从0到4 (★★☆)
(提示: np.arange)
Z = np.zeros((5, 5))
Z += np.arange(5)
print (Z)
38. 如何用一个生成10个整数的函数来构建数组 (★☆☆)
(提示: np.fromiter)
def generate():
for x in range(10):
yield x
Z = np.fromiter(generate(), dtype=float, count=-1)
print (Z)
39. 创建一个大小为10的向量, 值域为0到1,不包括0和1 (★★☆)
(提示: np.linspace)
Z = np.linspace(0, 1, 12, endpoint=True)[1: -1]
print (Z)
40. 创建一个大小为10的随机向量,并把它排序 (★★☆)
(提示: sort)
Z = np.random.random(10)
Z.sort()
print (Z)
- 微信小程序实战教程:火车票查询(含demo)
- NGS基础 - FASTQ格式解释和质量评估
- 数据结构之串
- 生信宝典之傻瓜式 (一) 如何提取指定位置的基因组序列
- 注意map<> 的[]
- 生信宝典之傻瓜式 (二) 如何快速查找指定基因的调控网络
- React Native组件只Image
- 数据结构之线性表
- 生信宝典之傻瓜式 (三) 我的基因在哪里发光 - 如何查找基因在发表研究中的表达
- 谈谈 char *num="123";和char num[4]="123";的区别
- 未越狱的iPhone/iPad也中招:走近强大的间谍软件XAgent与MadCap
- 【年末收藏】17个新手常见Python运行时错误
- C++ STL之priority_queue
- 链表的相关操作
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Kubernetes 1.19.0——deployment(1)
- 02 . Jeknins简介部署及自动化部署PHP代码
- java编程思想第四版第八章习题
- java编程思想第四版第八章总结
- ESP32从网络获取天气OLED显示(附源码)
- 02 . Zabbix配置监控项及聚合图形
- 01 . GitLab简介及环境部署
- 03 . Prometheus监控容器和HTTP探针应用及服务发现
- java编程思想第四版第九章习题
- 03 . Django之腾讯云短信
- ESP32 MQTT连接到中移OneNET物联网平台(附源码)
- 01 . Docker原理部署及常用操作命令
- SSH原理常见应用升级及端口转发
- 01 . Linux常用命令
- 私人订制属于自己的Linux系统