python之numpy库[1]
来源:互联网 发布:原生js处理ajax超时 编辑:程序博客网 时间:2024/05/22 11:40
python-numpy
python中的数据
一维数据
用列表和集合表示
数组与列表的关系
列表:数据类型可以不同
数组:数据类型可以相同
多维数据
用列表表示
高维数据
用字典表示
高维数据仅利用最基本的二元关系展示数据之间的复杂结构。
N维数组对象
ndarray
Python已有列表类型,为什么需要一个数组对象(类型)?
看一下下面两个例子就知道了。
def pySum(): a = [1,2,3,4] b = [4,5,6,7] c = [] for i in range(len(a)): c.append(a[i]**2 + b[i]**2) return cprint(pySum())
import numpy as npdef npSum(): a = np.array([1,2,3,4]) b = np.array([4,5,6,7]) c = a**2 + b**2 return cprint(npSum())
从上面两个例子可以看出,Python自带的list相当于标量化操作,而ndarray相当于向量化操作。
- 数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据
- 数组对象采用相同的数据类型,有助于节省运算和存储空间
- numpy的底层是用c写的,因而运算速度更快。
ndarray对象的属性
下面体会一下实际用法:
>>> import numpy as np>>> a = np.array([[1,2,3],[4,5,6]])>>> a.ndim2>>> a.shape(2, 3)>>> a.size6>>> a.dtypedtype('int32')>>> a.itemsize4
ndarray数组的元素类型
ndarray数组的创建方法
从Python中的列表、元组等类型创建ndarray数组
用法:
x = np.array(list/tuple)x = np.array(list/tuple, dtype=np.float32)
当np.array()不指定dtype时,NumPy将根据数据情况关联一个dtype类型
实例:
>>> x = np.array([1,2,3])>>> xarray([1, 2, 3])>>> print(x)[1 2 3]>>> y = np.array([4,5,6])>>> print(y)[4 5 6]>>> z = np.array([[1,2],[3,4],(5,6)])>>> print(z)[[1 2] [3 4] [5 6]]
使用NumPy中函数创建ndarray数组,如:arange, ones, zeros等
实例:
>>> np.arange(10)array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])>>> np.ones((3,4))array([[ 1., 1., 1., 1.], [ 1., 1., 1., 1.], [ 1., 1., 1., 1.]])>>> np.zeros((3,4),dtype=np.int32)array([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]])>>> np.eye(5)array([[ 1., 0., 0., 0., 0.], [ 0., 1., 0., 0., 0.], [ 0., 0., 1., 0., 0.], [ 0., 0., 0., 1., 0.], [ 0., 0., 0., 0., 1.]])>>> x = np.ones((2,3,4))>>> print(x)[[[ 1. 1. 1. 1.] [ 1. 1. 1. 1.] [ 1. 1. 1. 1.]] [[ 1. 1. 1. 1.] [ 1. 1. 1. 1.] [ 1. 1. 1. 1.]]]>>> x.shape(2, 3, 4)
使用NumPy中其他函数创建ndarray数组
>>> a = np.linspace(1,10,4)>>> aarray([ 1., 4., 7., 10.])>>> b = np.linspace(1,10,4,endpoint=False)>>> barray([ 1. , 3.25, 5.5 , 7.75])>>> c = np.concatenate((a,b))>>> carray([ 1. , 4. , 7. , 10. , 1. , 3.25, 5.5 , 7.75])
从字节流(raw bytes)中创建ndarray数组
从文件中读取特定格式,创建ndarray数组
ndarray数组的维度变换
>>> a = np.ones((2,3,4), dtype=np.int32)>>> a.reshape((3,8))array([[1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1]])>>> aarray([[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]])>>> a.resize((3,8))>>> aarray([[1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1]])
>>> a = np.ones((2,3,4), dtype=np.int32)>>> a.flatten()array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])>>> aarray([[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]])>>> b = a.flatten()>>> barray([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
ndarray数组的类型变换
>>> a = np.ones((2,3,4), dtype=np.int32)>>> a.astype(np.float)array([[[ 1., 1., 1., 1.], [ 1., 1., 1., 1.], [ 1., 1., 1., 1.]], [[ 1., 1., 1., 1.], [ 1., 1., 1., 1.], [ 1., 1., 1., 1.]]])>>> aarray([[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]])
ndarray数组向列表的转换
>>> a = np.full((2,3,4),25,dtype=np.int)>>> aarray([[[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]], [[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]]])>>> a.tolist()[[[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]], [[25, 25, 25, 25], [25, 25, 25, 25], [25, 25, 25, 25]]]
数组的索引和切片
索引:获取数组中特定位置元素的过程
切片:获取数组元素子集的过程
一维数组的索引和切片:与Python的列表类似
多维数组的切片也类似
ndarray数组的运算
数组与标量之间的运算
数组与标量之间的运算作用于数组的每一个元素
NumPy一元函数
>>> a = np.arange(24).reshape((2,3,4))>>> np.square(a)array([[[ 0, 1, 4, 9], [ 16, 25, 36, 49], [ 64, 81, 100, 121]], [[144, 169, 196, 225], [256, 289, 324, 361], [400, 441, 484, 529]]], dtype=int32)>>> a = np.sqrt(a)>>> aarray([[[ 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]]])>>> np.modf(a)(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.]]]))
NumPy二元函数
- ‐ * / **
< >= <= == !=算术比较,产生布尔型数组
http://www.mooc.cn/course/7848.html
阅读全文
0 0
- python之numpy库[1]
- python库之numpy
- Python之NumPy库
- Python之Numpy库
- python之numpy库[2]
- python第三方库之numpy
- python之Numpy使用
- Python模块之NumPy
- Python之numpy
- python之numpy
- python笔记之NUMPY
- python之numpy详解
- Python之numpy学习
- python之numpy学习
- python之numpy学习
- python基础之numpy
- Python学习之Numpy
- Python学习之NumPy
- Installation failed with message Failed to establish session
- POJ 1659 Frogs' Neighborhood (Havel-Hakimi定理 + 贪心)
- PHP模板引擎twig介绍
- shiro认证流程初(ini方式)
- 【剑指offer】面试题37:两个链表的第一个公共结点
- python之numpy库[1]
- android 建造者设计模式
- 正则表达式
- 13. Roman to Integer
- Could not obtain transaction-synchronized Session for current thread
- malloc()与free()学习笔记
- javascript高级程序设计中的浏览器检测、浏览器引擎检测,平台检测完整代码
- jq的一些基本选择器
- 用户权限管理系统(正式版)