python numpy包基础(1)
来源:互联网 发布:如何查网络摄像头 编辑:程序博客网 时间:2024/06/05 18:57
参考:Wes McKinney 《Python for Dtaa Analysis》
介绍
NumPy(Numerical Python的简称),是高性能科学计算和数据分析的基础包。其部分功能如下:
- ndarray,一个具有矢量算术运算和复杂广播能力的快速且省空间的多维数组
- 用于对整组数据进行快速运算的标准科学函数(类似于R无需编写循环)
- 用于读写磁盘数据的工具以及用于操作内存映射文件的工具
- 线性代数、随机数生成以及傅里叶变换功能
- 用于集成由C、C++等语言编写的代码的工具
最后一点也是从生态系统角度来看最重要的一点。由于NumPy提供了一个简单易用的C API,因此很容易将数据传递给低级语言编写的外部库,外部库也能以NumPY数组的形式将数据返回给Python。
数组
1.安装和导入
pip install numpy/NumPy #控制台安装
import numpy as np #导入必须小写,且最好遵守np的惯例
2.ndarray使用
NumPy最重要的一个特点就是其N维度=数组对象,即ndarray,该对象是一个快速而灵活的大数据容器。
ndarray是一个通用的同构数据多维容器,也就是说其中的所有元素必须是相同类型。
2.1创建数组(ndarray)
创建数组最简单的方法是使用array(data)函数,传入的参数是一切序列型的对象(包括其他数组),然后产生一个含有传入数据的ndarray。
>>> data1=[1,2,3] >>> arr1=np.array(data1)>>> arr1array([1, 2, 3])>>> data2=[[1,2,3],[4,5,6]] #嵌套序列>>> arr2=np.array(data2)>>> arr2array([[1, 2, 3], [4, 5, 6]])>>> arr3=np.array(arr2)>>> arr3array([[1, 2, 3], [4, 5, 6]])
嵌套序列(如几个等长的列表)将会被转化为一个多维数组,当然即使是不等长的也可以
>>>arr4=np.array([(1,2,3),(4,5)])>>> arr4array([(1, 2, 3), (4, 5)], dtype=object)
除此之外,还有一些常用的创建ndarray数组的方式:
- asarray
将输入转化为ndarray,如果输入本身就是一个ndarray就不开辟内存复制,而是指向该地址所指的ndarray对象 - arange
类似于内置的arange,但返回的是一个ndarray而不是列表 - ones、ones_like
根据指定的形状和dtype创建一个全1数组。ones_like以另一个数组为参数,并根据其形状和dtype创建一个全1数组 - zeros、zeros_like
类似ones、onse_like,只不过产生的是全0数组 - empty、empty_like
创建新数组,只分配内存空间但不填充任何数值 - eye、identity
创建一个N× N单位矩阵(对角线为1,其余为0)
需要说明的是,empty函数返回的并非全0而是数组,其内都是一些没有意义未初始化的值,请切记。但是empty是最快的创建数组的方式,这一点需要注意。
2.2ndarray的数据类型
ndarray有一些常用的属性,如:
- .ndim:维度
>>>arr2=array([[1, 2, 3], [4, 5, 6]])>>> arr2.ndim2
- .shape:尺寸
>>> arr2.shape(2, 3)
- .dtype:数据类型
>>> arr2.dtypedtype('int64')
注意到有一个属性:dtype,这是ndarray用于存储数据类型的对象。
除非显式说明,np.array会尝试为新建的这个数组推断出一个合适的数据类型,如上面的例子。
具体而言,NumPy的数据类型如下:
dtype=
可以+np.类型/’类型代码’/’类型’
如果你确实很懒或者吧不确定数据的确切类型,你也可以直接填入python中的已有数据类型,如dtype=float
。ndarray会自动匹配最接近的数据类型。
对于已有的ndarray数组你可以通过astype函数显式的转换其dtype,如
arr=np.array([1,2,3])arr=arr.astype(float)arr
2.3ndarray与标量之间的运算
数组和重要,因为他可以使你不用编写循环就可以对数据进行批量处理,这通常叫做矢量化(vectorization),这点上python与R还是十分相似的。
数组与标量的运算会传播至数组的每个元素
>>>arr1=np.array([[1,2,3], [4,5,6]])>>>arr1*3array([[ 3, 6, 9], [12, 15, 18]])
大小相等的数组会在对应元素间进行运算
>>>arr2=np.arry([[1,2,3], [4,5,6]])>>>arr2-arr1array([[0, 0, 0], [0, 0, 0]])
不同大小的数组间的运算叫做广播,这在之后的博文中再做介绍。
- python numpy包基础(1)
- Python中的numpy包
- Python中的包numpy
- Python--Numpy包
- python系列四.1(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包
- 手动更新HomeAssistant版本
- Java 8 HashMap 实现机制简析
- 添加并设置sudo/su用户权限
- 求一整型数组的严格单调的最长连续子序列的长度
- Analyzing an exploit for СVE-2017-11826
- python numpy包基础(1)
- HDU 5701 中位数计数(思维,区间)好题
- Nginx与Tomcat 实现负载均衡
- java分割超大文本文件
- 46.Permutations leetcode java
- 编程作业(三)
- 15算法课程 171. Excel Sheet Column Number
- 海康威视web插件
- ExpressRoute 连接模型