Numpy(Numerical Python 的简称)时高性能科学计算和数据分析的基础包,提供了矩阵运算的功能。
相关链接Numpy官方推荐教程
Numpy具有以下几点能力:
- ndarry——一个具有向量算数运算和复杂广播能力的多位数组对象
- 用于对数组数据进行快速运算的标准数学函数
- 用于读写磁盘数据的工具以及用于操作内存映射文件的工具
- 非常有用的线性代数,傅立叶变换和随机数操作
- 用于继承c/c++和Fortran代码的工具
创建Numpy数组
使用numpy.array()可直接导入数组或矩阵
import numpy as np
a = np.array([1,2,3,4,5])
b = np.array([[1,1,1],[2,2,2],[3,3,3]])
print(a)
print(b)
//结果
[1 2 3 4 5]
[[1 1 1]
[2 2 2]
[3 3 3]]
获取与创建数组时设置纬度
reshape将当前一位数组设置成对应的m*n的矩阵
a = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])
a = a.reshape(3,5)
print(a)
//结果
[[ 1 2 3 4 5]
[ 6 7 8 9 10]
[11 12 13 14 15]]
通过a.shape()可以查看当前矩阵的纬度,返回值是一个元组
tu = a.shape
print(tu)
// 结果
(3, 5)
数组索引、切片、比较
matrix = np.array([[1,2,3],[20,30,40]])
*索引与正常二位数组相同*
print(matrix[0,1])
matrix = np.array([
[5,10,15],
[20,25,30],
[35,40,45]])
*切片与正常二维数组相同*
print(matrix[:,1])
print(matrix[:,0:2])
print(matrix[1:3,:])
print(matrix[1:3,0:2])
*结果*
2
[10 25 40]
[[ 5 10]
[20 25]
[35 40]]
[[20 25 30]
[35 40 45]]
[[20 25]
[35 40]]
*比较返回的是每一个数组元素比较之后的值,返回的也是一个数组,都是布尔类型*
z = (matrix[1,:]==25)
print(z)
*结果*
[False True False]
数组值的替换
值的替换在自然语言处理中很有用,例如我们在处理一个文本数组的时候,有几个数据元素是空,那么我们可以结合判断语句来获得是否为空的一个布尔数组,然后利用这个布尔数组进行元素替换
matrix=np.array([['1','2',''],['3','4','5'],['5','6','']])
m = (matrix[:,2] == '')
matrix[m,2]='0'
print(matrix)
*这里判断第三列中值为空的数据,返回一个bool类型的数组
,再将bool类型的数组当成是数组的下标进行替换数据就可以了,
这里只会替换值为真的时候的值,所以完全不必担心替换不必要的数据*
数据类型转换
初始化时设置数据类型用dtype
astype用于更改数据类型
vector = np.array(['1','2','3'])
vector = vector.astype(float)
print(vector)
*结果*
[1. 2. 3.]
统计计算方法
sum
mean
max
**********
vector.sum()
vector.mean()
vector.max()
**********
6.0 和
2.0 平均
3.0 最大
************
对于矩阵需要设置行或者列
matrix = np.array([[20,10,15],[30,20,14],[30,29,43]])
matrix.sum(axis=1)//每行相加求和
*结果*
array([ 45, 64, 102])
matrix.sum(axis=0)//每列相加求和
*结果*
array([80, 59, 72])
如果你还想了解更多,我想这个入门文档应该足够了