人工智能之NumPy库(超详细)

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:    生成数组的截至数据,是否包含该数
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值