2.NumPy简介
一:NumPy简介
• 官网链接:http://www.numpy.org/
• NumPy教程链接:https://www.yiibai.com/numpy/
• NumPy是Python语言的一个扩充程序库。支持高级大量的多维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库
NumPy – MatLab 的替代之一
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用。 这种组合广泛用于替代 MatLab,是一个流行的技术计算平台。
但是,Python 作为 MatLab 的替代方案,现在被视为一种更加现代和完整的编程语言。
二:NumPy基本功能
• 快速高效的多维数组对象ndarray
• 用于对数组执行元素级计算以及直接对数组执行数学运算的函数
• 用于读写硬盘上基于数组的数据集的
• 线性代数运算、傅里叶变换,以及随机数生成
傅立叶变换和用于图形操作的例程。
与线性代数有关的操作。 NumPy 拥有线性代数和随机数生成的内置函数。
三:效率对比
• 三种数据结构:list / array / numpy.array
• 三种方法求和:for / sum / numpy.sum
import timeit
common_for = """
for d in data:
s += d
""" common_sum = """
sum(data)
""" common_numpy_sum = """
numpy.sum(data)
""" def timeit_list(n, loops):
list_setup = """
import numpy
data = [1] * {}
s = 0
""".format(n)
print 'list:'
print timeit.timeit(common_for, list_setup, number = loops)
print timeit.timeit(common_sum, list_setup, number = loops)
print timeit.timeit(common_numpy_sum, list_setup, number = loops) def timeit_array(n, loops):
array_setup = """
import numpy
import array
data = array.array('L', [1] * {})
s = 0
""".format(n)
print 'array:'
print timeit.timeit(common_for, array_setup, number = loops)
print timeit.timeit(common_sum, array_setup, number = loops)
print timeit.timeit(common_numpy_sum, array_setup, number = loops) def timeit_numpy(n, loops):
numpy_setup = """
import numpy
data = numpy.array([1] * {})
s = 0
""".format(n)
print 'numpy:'
print timeit.timeit(common_for, numpy_setup, number = loops)
print timeit.timeit(common_sum, numpy_setup, number = loops)
print timeit.timeit(common_numpy_sum, numpy_setup, number = loops) if __name__ == '__main__':
timeit_list(50000, 500)
timeit_array(50000, 500)
timeit_numpy(50000, 500)
运行结果:
list:
0.94836021896
0.126542218145
1.25408217549
array:
2.02870422344
1.4137293358
5.92805967058
numpy:
3.81213793067
2.90964482707
0.0174179931709
四:NumPy的Ndarray对象(N 维数组类型)
基本的ndarray是使用 NumPy 中的数组函数创建的,如下所示:
它从任何暴露数组接口的对象,或从返回数组的任何方法创建一个ndarray。
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
上面的构造器接受以下参数:
| 序号 | 参数及描述 |
|---|---|
| 1. | object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。 |
| 2. | dtype 数组的所需数据类型,可选。 |
| 3. | copy 可选,默认为true,对象是否被复制。 |
| 4. | order C(按行)、F(按列)或A(任意,默认)。 |
| 5. | subok 默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。 |
| 6. | ndimin 指定返回数组的最小维数。 |
五:代码示例:
# -*- coding: utf-8 -*- import numpy as np print '使用普通一维数组生成NumPy一维数组'
data = [6, 7.5, 8, 0, 1]
arr = np.array(data)
print arr
print '打印元素类型'
print arr.dtype
print print '使用普通二维数组生成NumPy二维数组'
data = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr = np.array(data)
print arr
print '打印数组维度'
print arr.shape
print print '使用最小维度生成NumPy维度数组'
data = np.array([1, 2, 3,4,5], ndmin = 2)
print data
print print '使用zeros/empty'
print np.zeros(10) # 生成包含10个0的一维数组
print np.zeros((3, 6)) # 生成3*6的二维数组
print np.empty((2, 3, 2)) # 生成2*3*2的三维数组,所有元素未初始化。
print print '使用arrange生成连续元素'
print np.arange(15) # [0, 1, 2, ..., 14]
运行结果:
使用普通一维数组生成NumPy一维数组
[6. 7.5 8. 0. 1. ]
打印元素类型
float64
-------------------------------------
使用普通二维数组生成NumPy二维数组
[[1 2 3 4]
[5 6 7 8]]
打印数组维度
(2L, 4L)
-------------------------------------
使用最小维度生成NumPy维度数组
[[1 2 3 4 5]]
-------------------------------------
使用zeros/empty
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[[0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0.]]
[[[1.91684511e-316 1.55481945e-316]
[0.00000000e+000 0.00000000e+000]
[0.00000000e+000 0.00000000e+000]] [[0.00000000e+000 0.00000000e+000]
[0.00000000e+000 0.00000000e+000]
[0.00000000e+000 0.00000000e+000]]]
-------------------------------------
使用arrange生成连续元素
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
六:NumPy - 数据类型
NumPy 支持比 Python 更多种类的数值类型。 下表显示了 NumPy 中定义的不同标量数据类型。
| 序号 | 数据类型及描述 |
|---|---|
| 1. | bool_存储为一个字节的布尔值(真或假) |
| 2. | int_默认整数,相当于 C 的long,通常为int32或int64 |
| 3. | intc相当于 C 的int,通常为int32或int64 |
| 4. | intp用于索引的整数,相当于 C 的size_t,通常为int32或int64 |
| 5. | int8字节(-128 ~ 127) |
| 6. | int1616 位整数(-32768 ~ 32767) |
| 7. | int3232 位整数(-2147483648 ~ 2147483647) |
| 8. | int6464 位整数(-9223372036854775808 ~ 9223372036854775807) |
| 9. | uint88 位无符号整数(0 ~ 255) |
| 10. | uint1616 位无符号整数(0 ~ 65535) |
| 11. | uint3232 位无符号整数(0 ~ 4294967295) |
| 12. | uint6464 位无符号整数(0 ~ 18446744073709551615) |
| 13. | float_float64的简写 |
| 14. | float16半精度浮点:符号位,5 位指数,10 位尾数 |
| 15. | float32单精度浮点:符号位,8 位指数,23 位尾数 |
| 16. | float64双精度浮点:符号位,11 位指数,52 位尾数 |
| 17. | complex_complex128的简写 |
| 18. | complex64复数,由两个 32 位浮点表示(实部和虚部) |
| 19. | complex128复数,由两个 64 位浮点表示(实部和虚部) |
数据类型对象 (dtype):numpy.dtype(object, align, copy)
# -*- coding: utf-8 -*- import numpy as np
#定义名为 student 的结构化数据类型,其中包含字符串字段name,整数字段age和浮点字段marks。 此dtype应用于ndarray对象
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')])
print student
a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student)
print a
print '---------------------------------' print " 文件名称可用于访问 age 列的内容 "
dt = np.dtype([('age',np.int8)])
print dt
a = np.array([(10,),(20,),(30,)], dtype = dt)
print a
print a['age']
2.NumPy简介的更多相关文章
- NumPy之:NumPy简介教程
目录 简介 安装NumPy Array和List 创建Array Array操作 sort concatenate 统计信息 reshape 增加维度 index和切片 从现有数据中创建Array 算 ...
- NumPy简介
NumPy是什么? NumPy(Numerrical Python 的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然的使用数组.NumPy包含很多实用的数学函数,涵盖线性代数运 ...
- numpy 简介
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- 科学计算工具Numpy简介
Numpy(Numerical Python) Numpy:提供了一个在Python中做科学计算的基础库,重在数值计算,主要用于多维数组(矩阵)处理的库.用来存储和处理大型矩阵,比Python自身的嵌 ...
- NumPy 简介及安装
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.NumPy 的前身 Numeric 最早是 ...
- NumPy与ndarray简介(转)
http://blog.csdn.net/u014374284/article/details/45420645 一.NumPy简介 NumPy的全名为Numeric Python,是一个开源的Pyt ...
- numpy常用用法总结
numpy 简介 numpy的存在使得python拥有强大的矩阵计算能力,不亚于matlab. 官方文档(https://docs.scipy.org/doc/numpy-dev/user/quick ...
- Numpy基础笔记
Numpy简介 Numpy(Numerical Python的简称)是高性能科学计算和数据分析的基础包.其部分功能如下: ①ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 ...
- [python]-数据科学库Numpy学习
一.Numpy简介: Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针.这样为了保存一个简单的[1,2,3],需要有3 ...
随机推荐
- 从零探索Java网络编程01之 TCP/IP 与 Socket
最近完成了几项比较简单的项目, 终于是在996里偷了点闲暇时光, 想着来研究研究些啥吧? 一个普通的控制台日志映入了我的眼帘(孽缘呀): (图中使用 SpringBoot 的 log4j 来输出日志 ...
- Openstack知识点总结
Openstack: 一.云计算+openstack概念: 1.云计算是一种按使用量付费的模式,这种模式提供可用的,便捷的,按需的访问,通过互联网进入可配置的计算资源共享池(资源包括网络,计算,存储, ...
- 《机器学习实战(基于scikit-learn和TensorFlow)》第七章内容学习心得
本章主要讲述了“集成学习”和“随机森林”两个方面. 重点关注:bagging/pasting.boosting.stacking三个方法. 首先,提出一个思想,如果想提升预测的准确率,一个很好的方法就 ...
- AspxGridView 弹框选择器 JS
function Dictionary() { this.data = new Array(); this.put = function (key, value) { this.data[key] = ...
- Sql 语句收集——行转列
SQL行转列汇总 PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in ...
- vlan端口类型
交换机三种链路类型:access.trunk.hybrid. access类型只属于一个VLAN,一般用于连接计算机端口. trunk类型可以允许多个vlan通过,可以接收和发送多个vlan的报文,一 ...
- PAT B1014/A1061 福尔摩斯的约会(20)
书中AC代码 #include <cstdio> #include <iostream> #include <cstring> using namespace st ...
- PAT B1042 挖掘机哪家强
AC代码 #include <cstdio> #include <algorithm> using namespace std; const int max_n = 11000 ...
- 基于C#开发的扩展按钮控件
最近在准备一套自定义控件开发的课程,下面将第一个做的按钮控件分享给大家. 其实这个控件属于自定义控件中的扩展控件,与组合控件和GDI+开发的控件不同,这个控件是继承原生的Button, 这个控件的目的 ...
- 解决windows系统下ping,ipconfig不是内部或外部命令
一般情况下,都是误删了系统变量path的值.解决方法:右击我的电脑 → 选择属性 → 选择高级系统设置 → 环境变量 → 在系统变量列表中,找到“path”环境变量双击,打开.在变量值这一栏检测下是否 ...