使用NumPy、Numba的简单使用(一)
Numpy是python的一个三方库,主要是用于计算的,数组的算数和逻辑运算。与线性代数有关的操作。
很多情况下,我们可以与SciPy和 Matplotlib(绘图库)一起使用。来替代MatLab,下面我来来看一下numpy库的常见的一些操作。
#!/usr/bin/env python
# -*- coding: utf-8 -*- import numpy as np if __name__ == '__main__':
print(np.array([1, 2, 3]))
我们可以看到我们的输出为[1,2,3],类型为<class 'numpy.ndarray'>,我们可以将一个列表转化为数组。这里我也列出了一些最基本的用法
#!/usr/bin/env python
# -*- coding: utf-8 -*- import numpy as np if __name__ == '__main__':
a = np.array(['', '', ''])
print(a.size) # 数组的长度
print(a.shape) # 数组的结构
print(a.ndim) # 数组的维度
print(a.dtype) # 内部元素类型
创建10行10列的数值为浮点1的矩阵
array_one = np.ones([10, 10])
快创建10行10列的数值为浮点0的矩阵
array_zero = np.zeros([10, 10])
从现有的数据创建数组
- array(深拷贝)
- asarray(浅拷贝)
#!/usr/bin/env python
# -*- coding: utf-8 -*- import numpy as np if __name__ == '__main__':
a = array_one = np.ones([10, 10])
b = np.asarray(a)
print(id(a))
print(id(b))
c = np.array(b)
print(id(c))
说完了这些,我们应该对于numpy有了初步的认识,我们到这里知道了numpy.....原来是生成一个多维数组的玩意
我们再来深入的看一下numpy的内部信息吧。
NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
ndarray 对象是用于存放同类型元素的多维数组。
ndarray 中的每个元素在内存中都有相同存储大小的区域。
ndarray 内部由以下内容组成:
一个指向数据(内存或内存映射文件中的一块数据)的指针。
数据类型或 dtype,描述在数组中的固定大小值的格子。
一个表示数组形状(shape)的元组,表示各维度大小的元组。
一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。
这里我们提到的了跨度,跨度可以是负数,这样会使数组在内存中后向移动,切片中 obj[::-1] 或 obj[:,::-1] 就是如此。注意这里是字节数,不是字符数。
创建一个 ndarray 只需调用 NumPy 的 array 函数即可,这里我们要说一个重要的属性,也是容易误解的属性->ndim,秩,即轴的数量或维度的数量,我们只记住他是维度的数量就ok了。
索引:
import numpy as np if __name__ == '__main__':
a = np.arange(10)
print(a)
s = slice(2, 8, 2) # 从索引 2 开始到索引 8 停止,间隔为2,是一个左闭右开区间
print(a[s])
切片:
#!/usr/bin/env python
# -*- coding: utf-8 -*- import numpy as np if __name__ == '__main__':
a = np.arange(10)
print(a)
print(a[2:8:2]) # 从索引 2 开始到索引 8 停止,间隔为 2,不包含8的一个左闭右开区间
冒号 : 的解释:如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。如果为 [2:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。
切片还可以包括省略号 …,来使选择元组的长度与数组的维度相同。 如果在行位置使用省略号,它将返回包含行中元素的 ndarray。
a[...,n]) # 第n+1列元素
a[n,...]) # 第n+1行元素
#!/usr/bin/env python
# -*- coding: utf-8 -*- import numpy as np if __name__ == '__main__':
a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])
print(a)
print(a[..., 2])
print(a[1, ...])
高级索引:
NumPy 比一般的 Python 序列提供更多的索引方式。除了之前看到的用整数和切片的索引外,数组可以由整数数组索引、布尔索引及花式索引。
#!/usr/bin/env python
# -*- coding: utf-8 -*- import numpy as np
x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0,1,2], [0,1,0]]
print(x)
print (y)
在y的输出我们可以看到,我们对于X切片得到的y,其实[0,1,2],[0,1,0]两个数组,我们得到的是第0,0;1,1;2,0三个数据。
布尔索引:
import numpy as np x = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])
print('我们的数组是:')
print(x)
print('\n')
# 现在我们会打印出大于 5 的元素
print('大于 5 的元素是:')
print(x[x > 5])
我们得到的是所有大于5的元素。
使用NumPy、Numba的简单使用(一)的更多相关文章
- numpy和pandas简单使用
numpy和pandas简单使用 import numpy as np import pandas as pd 一维数据分析 numpy中使用array, pandas中使用series numpy一 ...
- 使用NumPy、Numba的简单使用(二)
本来要写NLP第三课动态规划的,日了,写到一半发现自己也不会了,理论很简单,动态规划咋回事也知道,但是实现在源码上还是有点难度,现在简单给予题目描述,小伙伴也可以来思考一下,例题一,我们现在有1元硬币 ...
- 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...
- pandas、matplotlib、Numpy模块的简单学习
目录 一.pandas模块 二.matplotlib模块 1.条形图 2. 直方图 3.折线图 4.散点图+直线图 三.numpy 一.pandas模块 pandas是BSD许可的开源库,为Pytho ...
- Numpy入门(简单)
NumPy介绍 最近因为需要使用python做一个数据处理的项目,所以粗略的学习了一下numpy,在此分享一下自己学习中遇到的一些问题和一些基础的名词. 什么是NumPy? python用于科学计算的 ...
- numpy 解一道简单数学题
题目 A group took a trip on a bus, at 3 per child and 3.20 per adult for a total of 118.40. They took ...
- 利用pandas对numpy数组进行简单的科学计算
二维数组转换为DataFrame pandas可直接进行科学计算形式: import numpy as np import pandas as pd a = [1,2,3] b = [4,5,6] # ...
- numpy基础篇-简单入门教程4
np.set_printoptions(precision=3),只显示小数点后三位 np.random.seed(100) rand_arr = np.random.random([2, 2]) n ...
- numpy基础篇-简单入门教程3
np import numpy as np np.__version__ print(np.__version__) # 1.15.2 numpy.arange(start, stop, step, ...
随机推荐
- 由 ToString()和Convert.ToString() 引发的问题
对于久经沙场的程序猿来说,类型转换再熟悉不过了,在代码中我们也会经常用到. 前几天,有个学生问我关于类型转换ToString()和Convert.ToString()的区别,这么常用的东西我竟然支支吾 ...
- SpringMVC学习笔记一(请求流程和配置,启动项目)
springmvc请求流程: 1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器. 3.处理器映 ...
- linux下编译安装MariaDB 10.4.7,解决错误:cannot access ‘/auth_pam_tool_dir’: No such file or directory
编译安装MariaDB 10.4.7,前面的步骤我就不复述了,一切正常没什么问题. 当执行到:scripts/mysql_install_db --basedir=/usr/local/mysql - ...
- HTML常用标签三
表格标签 表格的作用 表格主要用于显示.展示数据,因为他们可以让数据显示的非常规整,可读性非常好,特别是后台展示数据的时候,能够熟练运用表格就先的很重要,一个清爽简约的表格能够把繁杂的数据表现的很有条 ...
- iOS开发时获取第一响应者
上篇中提到键盘相应时间中用到了获取当前第一响应者的方法是苹果的是有方法,无法上传到App Store,本文将介绍一种非常简单的且未用到私有API的方法来获取当前第一响应者. 实现思路:用到的iOS A ...
- 工具类ToastUtil 避免在子线程中使用抛异常 "Can't create handler inside thread that has not called Looper.prepare()"
package com.example.kbr.utils; import android.view.Gravity; import android.widget.Toast; import io.r ...
- 一文解读5G (转)
今天要研究的对象,是5G接入网. 什么是接入网?相信不少同学,对这个概念一定不会陌生. 搬出这张移动通信架构图: 接入网,在我们无线通信里,一般指无线接入网,也就是通常所说的RAN(Radio Acc ...
- 由定时脚本错误以及Elasticsearch配置错误引发的Flink线上事故
近期接手离职同事项目,突然遇到线上事故,Flink无法正常聚合数据生成指标. 以下是详细的排查过程: 问题复现 清晨,运维报告Flink数据分析模块无法正常生成指标数据. 赶紧登陆Flink所在机器, ...
- Service__cmd安装MySQL并连接SQLyog
整理记录关于使用cmd安装mysql的过程 1.配置环境变量 1) 计算机->属性->高级系统设置->环境变量 2)先添加变量 变量名:MYSQL_HOME 变量值:D:\mys ...
- css为图片添加一层蒙版并在上层显示文字等
效果图: 代码如下: <div class="row" style="width:100%; position:relative;z-index:1;margin: ...