NumPy简介
numpy高效的处理数据,提供数组的支持,python默认没有数组。pandas、scipy、matplotlib都依赖numpy。
pandas主要用于数据挖掘,探索,分析
maiplotlib用于作图,可视化
scipy进行数值计算,如:积分,傅里叶变换,微积分
statsmodels用于统计分析
Gensim用于文本挖掘
sklearn机器学习, keras深度学习
Numpy是一个Python包,它代表“Numeric Python”.它是一个有多维数组对象和用于处理数组的集合组成的库。Numeric,即Numpy的前身,是由 Jim Hugunin 开发的。 也开发了另一个包 Numarray ,它拥有一些额外的功能。 2005年,Travis Oliphant 通过将 Numarray 的功能集成到 Numeric 包中来创建 NumPy 包。 这个开源项目有很多贡献者。
标量(scalar):一个标量就是一个单独的数标量通常被赋予小写的变量名称。
向量(vector):一个向量是一列数,这些数是有序排列的,通过次序中的索引,我们可以确定每个单独的数,通常被赋予向量粗体的小写变量名称。
矩阵(matrix):矩阵是具有相同特征和纬度的对象的集合,表现为一张二维数组。
张量(tensor):超过两维的数组。一般的,一个数组中的元素分布在若干为坐标的空间中,将其称为张量。
Numpy基础
Numpy的主要对象是同种元素的多维数组,这是一个所有的元素都是一种类型,通过一个正整数元素索引的元素表格,在Numpy中维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank).
例如,在一个3D空间一个点的坐标[1,2,3]是一个秩为1的数组因为它只有一个轴。那个轴长度为3
[[1.,0.,0.], # 此数组的秩为2,(因为它有两个维度)第一个维度长度为2,第二个维度长度为3
[0.,1.,2.]]
Numpy的数组类被称为ndarray,通常被称作数组。注意numpy.array和标准Python库类array.array并不相同,后者只处理一维数组提供少量功能。而ndarray对象属性有:
- nsarray.ndim:数组轴的个数,在Python世界中,轴的个数被称作秩。
- ndarray.shape:数组的维度。这是一个指示数组在每个维度上大小的整数元组。例如一个n排m列的矩阵它的shape属性将是(2,3),这个元组的长度显然是秩,即维度或ndim属性。
- ndarray.size数组元素的总个数,等于shape属性中元组元素的乘积。
- ndarray.dtype一个用来描述数组中元素类型的对象,可以通过创造或指定dtype使用标准python类型,另外Numpy提供它自己的数据类型。
- ndarray.itemsize数组中每个元素的字节大小。例如:一个元素类型为float64的数组itemsize属性值为8(=64/8)。
- ndarray.data包含实际数组元素的缓冲区,通常不使用这个属性,因为我们总是通过索引来使用数组中的元素。
import numpy as np
a = np.arange(15).reshape(3,5)
print(a) # [[ 0 1 2 3 4],[ 5 6 7 8 9],[10 11 12 13 14]]
print(a.shape) # (3, 5)
print(a.ndim) # 2
print(a.dtype.name) # int32
print(a.itemsize) # 4
print(a.size) # 15
ndarray对象创建事例
#利用嵌套序列(一组等长列表组成的列表),将生成多维数组
In [4]: arr1=np.array([[1, 2], [3, 4]])
In [4]: arr1
Out[4]:
array([[1, 2],
[3, 4]])
In [3]: np.array([1, 2, 3],ndmin=2)
Out[3]: array([[1, 2, 3]])
#从子类中产生一个数组:
In [3]: np.array(np.array([1, 2, 3]), subok=True)
Out[76]: array([1, 2, 3])
#每个数组都有一个shape(一个表示各维度大小的元组) :
In [6]: arr1=np.array([[1, 2], [3, 4]])
In [6]: arr1.shape
Out[6]: (2,2)
#可以利用numpy的reshape 或ndarray类的reshape方法更改数组维度大小
a.reshape(shape, order='C')
reshape(a, newshape, order='C')
shape:表示新数组形状大小的整数或元组 # a.reshape(3,2)
newshape:表示新数组形状大小的元组 #np.reshape(a,(3,2))
备注:新数组不会更改原数组的数据
#可以利用ndarray的astype方法转换数组数据类型:
astype(dtype, order='K', casting='unsafe', subok=True, copy=True)
dtype: 需要转换的类型
In [7]: arr1=np.array([[1, 2], [3, 4]])
In [7]: arr1.astype(np.float)
Out[7]:
array([[1., 2.],
[3., 4.]])
arange([start,] stop [, step,], dtype=None)
函数功能:在start,stop间生成一个间隔为step等差数列的一维数组;
参数说明:
start : 数组的起始数据,包含该数据,可省略,若省略起始值为0;
stop: 数组的截至数据,不包含该数据;
step: 数组数据间的间隔.可省略,缺省为1;
dtype: 生成数组中数据的类型
返回值: ndarray 对象
In [10]: np.arange(1,6,2)
Out[10]: array([1, 3, 5])
In [10]: np.arange(1,6)
Out[10]: array([1, 2,3,4,5])
linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
功能:在start,stop间生成一个数量为num的等差数列的一维数组;
参数说明:
start : 生成数组的起始数据,
stop: 生成数组的截至数据,是否包含该数