(二)初识NumPy库(数组的操作和运算)
本章主要介绍的是ndarray数组的操作和运算!
一、 ndarray数组的操作:
操作是指对数组的索引和切片。索引是指获取数组中特定位置元素的过程;切片是指获取数组中元素子集的过程。
1、一维数组的索引和切片与python的列表类似:
索引:
import numpy as np a = np.array([9, 8, 7, 6, 5])
print(a[2])
7
切片:起始编号:终止编号:(不含):步长 三元素用冒号分割
import numpy as np
a = np.array([9, 8, 7, 6, 5])
print(a[1:4:2])
[8 6]
2、多维数组的索引和切片:
索引:
import numpy as np
a = np.arange(24).reshape((2, 3, 4))
print(a)
print(a[1, 2, 3])
print(a[0, 1, 2])
print(a[-1, -2, -3])
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]] [[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
23
6
17
切片:选取一个维度用:
import numpy as np
a = np.arange(24).reshape((2, 3, 4))
print(a)
print(a[:, 1, -3])
print(a[:, 1:3, :])
print(a[:, :, ::2])
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]] [[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
[ 5 17]
[[[ 4 5 6 7]
[ 8 9 10 11]] [[16 17 18 19]
[20 21 22 23]]]
[[[ 0 2]
[ 4 6]
[ 8 10]]
二、ndarray数组的运算:
1、数组与标量之间的运算作用于数组的每一个元素:
import numpy as np
a = np.arange(24).reshape((2, 3, 4))
print(a)
print(a.mean())
print(a / a.mean()) [[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]] [[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
11.5
[[[0. 0.08695652 0.17391304 0.26086957]
[0.34782609 0.43478261 0.52173913 0.60869565]
[0.69565217 0.7826087 0.86956522 0.95652174]] [[1.04347826 1.13043478 1.2173913 1.30434783]
[1.39130435 1.47826087 1.56521739 1.65217391]
[1.73913043 1.82608696 1.91304348 2. ]]]
2、Numpy的一元函数:
对ndarray中的数据执行元素级运算的函数:
| np.abs(x) np.fabs(x) | 计算数组各元素的绝对值 |
| np.sqrt(x) | 计算数组各元素的平方根 |
| np.square(x) | 计算数组各元素的平方 |
| np.log(x) np.log10(x) np.log2(x) | 计算数组各元素的自然对数、10底对数和2底对数 |
| np.ceil(x) np.floor(x) | 计算数组各元素的ceiling和floor值(ceiling是不超过这个元素的整数值,floor是小于这个元素的最大整数值) |
| np.rint(x) | 计算数组各元素的四舍五入值 |
| np.modf(x) | 将数组各元素的小数和整数部分以两个独立数组形式返回 |
| np.cos(x) np.cosh(x) np.sin(x) np.sinh(x) np.tan(x) np.tanh(x) | 计算数组各元素的普通型和双曲线的三角函数 |
| np.exp(x) | 计算数组各元素的指数值 |
| np.sign(x) | 计算数组各元素的符号值,1(+),0,-1(-) |
举例说明:
import numpy as np
a = np.arange(24).reshape((2, 3, 4))
print(np.square(a))
a = np.sqrt(a)
print(a)
print(np.modf(a)) [[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]] [[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
11.5
[[[0. 0.08695652 0.17391304 0.26086957]
[0.34782609 0.43478261 0.52173913 0.60869565]
[0.69565217 0.7826087 0.86956522 0.95652174]] [[1.04347826 1.13043478 1.2173913 1.30434783]
[1.39130435 1.47826087 1.56521739 1.65217391]
[1.73913043 1.82608696 1.91304348 2. ]]]
[[[ 0 1 4 9]
[ 16 25 36 49]
[ 64 81 100 121]] [[144 169 196 225]
[256 289 324 361]
[400 441 484 529]]]
[[[0. 1. 1.41421356 1.73205081]
[2. 2.23606798 2.44948974 2.64575131]
[2.82842712 3. 3.16227766 3.31662479]] [[3.46410162 3.60555128 3.74165739 3.87298335]
[4. 4.12310563 4.24264069 4.35889894]
[4.47213595 4.58257569 4.69041576 4.79583152]]]
(array([[[0. , 0. , 0.41421356, 0.73205081],
[0. , 0.23606798, 0.44948974, 0.64575131],
[0.82842712, 0. , 0.16227766, 0.31662479]], [[0.46410162, 0.60555128, 0.74165739, 0.87298335],
[0. , 0.12310563, 0.24264069, 0.35889894],
[0.47213595, 0.58257569, 0.69041576, 0.79583152]]]), array([[[0., 1., 1., 1.],
[2., 2., 2., 2.],
[2., 3., 3., 3.]], [[3., 3., 3., 3.],
[4., 4., 4., 4.],
[4., 4., 4., 4.]]]))
3、Numpy的二元函数:
| +-*/ | 两个数组各元素进行对应运算 |
| np.maximum(x,y) np.fmax() np.minimum(x,y) np.fmin() | 元素级的最大值/最小值计算 |
| np.mod(x,y) | 元素级的模运算 |
| np.copysign(x,y) | 将数组y中各元素值的符号赋值给数组x对应元素 |
| ><>=<===!= | 算术比较,产生布尔型数组 |
举例说明:
import numpy as np
a = np.arange(24).reshape((2, 3, 4))
b = np.sqrt(a)
print(np.maximum(a, b))
print(a > b) [[[ 0. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]] [[12. 13. 14. 15.]
[16. 17. 18. 19.]
[20. 21. 22. 23.]]]
[[[False False True True]
[ True True True True]
[ True True True True]] [[ True True True True]
[ True True True True]
[ True True True True]]]
(二)初识NumPy库(数组的操作和运算)的更多相关文章
- (一)初识NumPy库(数组的创建和变换)
在学习数据分析时,NumPy作为最基础的数据分析库,我们能够熟练的掌握它是学习数据分析的必要条件.接下来就让我们学习该库吧. 学习NumPy库的环境: python:3.6.6 编辑器:pycharm ...
- 初识NumPy库-基本操作
ndarray(N-dimensional array)对象是整个numpy库的基础. 它有以下特点: 同质:数组元素的类型和大小相同 定量:数组元素数量是确定的 一.创建简单的数组: np.arra ...
- $python数据分析基础——初识numpy库
numpy库是python的一个著名的科学计算库,本文是一个quickstart. 引入:计算BMI BMI = 体重(kg)/身高(m)^2 假如有如下几组体重和身高数据,让求每组数据的BMI值: ...
- 初识numpy库
numpy是一个在Python中做科学计算的基础库,重在数值计算,也是大部分Python科学计算库的基础库,多用于在大型.多维数组上执行数值运算 numpy创建数组(矩阵): numpy中的数据类型: ...
- Python 学习笔记之 Numpy 库——数组基础
1. 初识数组 import numpy as np a = np.arange(15) a = a.reshape(3, 5) print(a.ndim, a.shape, a.dtype, a.s ...
- Numpy入门 - 数组切片操作
本节主要演示数组的切片操作,数组的切片操作有两种形式:更改原数组的切片操作和不更改原数组的切片操作. 一.更改原数组的切片操作 import numpy as np arr = np.array([1 ...
- numpy库数组拼接np.concatenate的用法
concatenate功能:数组拼接 函数定义:numpy.concatenate((a1, a2, ...), axis=0, out=None)
- numpy库数组属性查看:类型、尺寸、形状、维度
import numpy as np q = np.array([1,2,3,4],dtype=np.complex128) print("数据类型",type(q)) ...
- 第十节:numpy之数组文件操作
1.安装ipython 2.创建txt文件 3.直接上代码:
随机推荐
- Cymothoa后门工具
Cymothoa是一款隐秘的后门工具. 发现网上对于Cymothoa的文章并不是很多,可是Cymothoa又是一款非常强大的后门工具,这里记录下Cymothoa的使用笔记. Cymothoa 是一款可 ...
- 为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?
之前在阅读<阿里巴巴Java开发手册>时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符 ...
- python编程系列---多个装饰器装饰一个函数的执行流程
首先看一个例子 ''' 多个装饰器装饰一个函数 ''' # 定义第一个装饰器 def set_func1(func): def wrapper1(*args,**kwargs): print('装饰内 ...
- Redis 文章一 之持久化机制的介绍
我们已经知道对于一个企业级的redis架构来说,持久化是不可减少的 企业级redis集群架构:海量数据.高并发.高可用 持久化主要是做灾难恢复,数据恢复,也可以归类到高可用的一个环节里面去,比如你re ...
- Leetcode(5)最长回文子串
Leetcode(4)寻找两个有序数组的中位数 [题目表述]: 给定一个字符串 s,找到 s 中 最长 的回文子串.你可以假设 s 的最大长度为 1000.' 第一种方法:未完成:利用回文子串的特点 ...
- 4. SOFAJRaft源码分析— RheaKV初始化做了什么?
前言 由于RheaKV要讲起来篇幅比较长,所以这里分成几个章节来讲,这一章讲一讲RheaKV初始化做了什么? 我们先来给个例子,我们从例子来讲: public static void main(fin ...
- ajax跨域简单请求与复杂请求
开发网站时经常会用到跨域资源共享(简称cors,后面使用简称)来解决跨域问题,但是在使用cors的时候,http请求会被划分为两类,简单请求和复杂请求,而这两种请求的区别主要在于是否会触发cors预检 ...
- Springboot 系列(十五)如何编写自己的 Springboot starter
1. 前言 Springboot 中的自动配置确实方便,减少了我们开发上的复杂性,那么自动配置原理是什么呢?之前我也写过了一篇文章进行了分析. Springboot 系列(三)Spring Boot ...
- 数据结构(三十二)图的遍历(DFS、BFS)
图的遍历和树的遍历类似.图的遍历是指从图中的某个顶点出发,对图中的所有顶点访问且仅访问一次的过程.通常有两种遍历次序方案:深度优先遍历和广度优先遍历. 一.深度优先遍历 深度优先遍历(Depth_Fi ...
- Unity 单例模式
明天十一放假,今天不知什么原因看到一篇unity单例模式的介绍,瞬间来了戾气. (一)最简单的单利 public class WebRequestUtility : MonoBehaviour { p ...