Numpy入门
1.什么是numpy
NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础
功能:
- ndarray 一个强大的N维数组对象
- 复杂(广播)功能
- 用于集成C / C ++和Fortran代码的工具
- 有用的线性代数,傅里叶变换和随机数能力
安装使用方法:
pip install numpy import numpy as np
备注:
在使用numpy进行科学计算时,可以安装scipy堆栈,例如Anaconda 具体安装的模块标准参考这里
2.numpy基础
numpy的主要对象是均匀的多维数组,数组内的各个元素类型相同。多维数组的类型为numpy.ndarray
先来介绍下ndarray对象都有哪些属性:
- ndarray.ndim : 数组的轴数(维数)。在Python世界中,维度的数量被称为等级。
- ndarray.shape : 阵列的尺寸。这是一个整数元组,指示每个维度中数组的大小。对于具有n行和m列的矩阵,shape将是(n,m)。shape因此,元组的长度 是等级或维数 ndim。
- ndarray.size : 数组的元素总数。这等于元素的乘积shape。
- ndarray.dtype : 描述数组中元素类型的对象。可以使用标准Python类型创建或指定dtype。另外NumPy提供自己的类型。例如:numpy.int32,numpy.int16和numpy.float64。
- ndarray.itemsize : 数组的每个元素的大小(以字节为单位)。例如,类型的元素数组float64具有itemsize8(= 64/8),而其中一个元素complex32具有itemsize4(= 32/8)。相当于ndarray.dtype.itemsize。
- ndarray.data : 该缓冲区包含数组的实际元素。通常,我们不需要使用此属性,因为我们将使用索引设施访问数组中的元素。
数组几种创建方法:
1.使用array函数从常规python列表或元祖创建数组,结果数组的类型从序列中的元素类型推导出来
>>>a = np.array([1,2,3,4,5]) >>>a.dtype dtype('int32') >>>a = np.array([1.0,2.0,3.0,4.0,5.0]) >>>a.dtype dtype('float64')
# 创建一个二维数组 b = np.array([[1.4,2.,3.],[5.,6.,7.]]) # 创建时也可以指定数组类型(复数类型) b = np.array([[1,2],[3,4]],dtype=complex)
通常,数组的元素最初是未知的,但它的大小是已知的。因此,NumPy提供了几个函数来创建具有初始占位符内容的数组。这些最小化生长阵列的必要性,这是昂贵的操作。
该函数zeros创建一个充满零的数组,该函数 ones创建一个包含一个数组的数组,该函数empty 创建一个数组,其初始内容是随机的,并且取决于内存的状态。默认情况下,创建的数组的dtype为 float64。
为了创建数字序列,NumPy提供了类似于range的函数返回数组而不是列表。
>>>np.arange(10,20,2) array([10, 12, 14, 16, 18]) >>>np.arange(10,20,2.5) # 三个参数分别为起始,结束,步长,这里步长可以接受float参数 array([ 10. , 12.5, 15. , 17.5])
当arange与浮点参数一起使用时,由于有限的浮点精度,通常不可能预测获得的元素的数量。因此,通常最好使用linspace接收作为参数的函数的函数,而不是步长:
>>>np.linspace(0,2,9) array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ]) >>>from numpy import pi >>> x = np.linspace(0,2*pi,100)
也可以看看 :
array
, zeros
, zeros_like
, ones
, ones_like
, empty
, empty_like
, arange
, linspace
, numpy.random.rand
, numpy.random.randn
, fromfunction
,fromfile
打印数组:
数据的打印会以很友好的方式显示出来,但在这里说明一点,如果数组太大而无法打印,numpy会自动跳过阵列的中央部分,可以更改打印选项来进行设置
np.set_printoptions(threshold=nan) # 打印全部 默认为1000 np.set_printoptions(precision=3) # 设置精度
基本操作:
>>> a = np.array( [20,30,40,50] ) >>> b = np.arange( 4 ) >>> b array([0, 1, 2, 3]) >>> c = a-b >>> c array([20, 29, 38, 47]) >>> b**2 array([0, 1, 4, 9]) >>> 10*np.sin(a) array([ 9.12945251, -9.88031624, 7.4511316 , -2.62374854]) >>> a<35 array([ True, True, False, False], dtype=bool)
与许多矩阵语言不同,*
在NumPy数组中运行元素。可以使用该dot
功能或方法按照矩阵乘法的规则来运算的:
>>> A = np.array( [[1,1], ... [0,1]] ) >>> B = np.array( [[2,0], ... [3,4]] ) >>> A*B # elementwise product array([[2, 0], [0, 4]]) >>> A.dot(B) # matrix product array([[5, 4], [3, 4]]) >>> np.dot(A, B) # another matrix product array([[5, 4], [3, 4]])
https://docs.scipy.org/doc/numpy/user/quickstart.html#quickstart-shape-manipulation
待续:
待续:
待续:
待续: