numpy,全称numeric python,是一个由多维数组对象和用于处理数组的例程集合组成的库,是python数据分析中最基础的工具。利用numpy,可以轻松地使用python达到matlab中的矩阵、线性代数等等运算。
下面给出一些示例的使用方法,作为入门。完整的API文档可以参考文末给出的参考资料。
# coding=utf-8
# author=BebDong
# 10/14/18
import numpy as np
# 导入线性方程组相关
from numpy.linalg import *
# ndarray 测试
def ndarray_test():
print("ndarray:")
# 普通列表
lst = [[1, 3, 5], [2, 4, 6]]
print(type(lst))
# numpy ndarray
np_lst = np.array(lst)
print(type(np_lst))
# 指定类型定义
np_lst = np.array(lst, dtype=np.float)
# 常用属性:数组行数和列数
print(np_lst.shape)
# 常用属性:数组维数
print(np_lst.ndim)
# 常用属性:数据类型
print(np_lst.dtype)
# 常用属性:元素大小
print(np_lst.itemsize)
# 常用属性:数组元素个数
print(np_lst.size)
# 常用数组测试
def arrays_test():
print("常用数组:")
# 0数组,方便进行数据初始化
print(np.zeros([2, 3]))
# 1数组
print(np.ones([3, 5]))
# 打印随机数矩阵(0~1均匀分布)
print(np.random.rand(2, 4))
# 打印随机数
print(np.random.rand())
# 指定范围打印随机整数
print(np.random.randint(1, 10))
print(np.random.randint(1, 10, [3, 3]))
# 正态分布随机数
print(np.random.randn())
print(np.random.randn(2, 4))
# 在指定范围产生随机数
print(np.random.choice([10, 2, 8, 9]))
# beta分布
print(np.random.beta(1, 10, 20))
# 其他常见分布亦可……
# numpy常用操作
def operations():
# 产生等差数列,默认公差为1,可覆盖
print(np.arange(1, 51, 5))
# 将产生的一维数列重定形为n维数组
print(np.arange(1, 13, 2).reshape([3, -1]))
# numpy中array的算术操作将作用在每个元素身上
lst = np.arange(1, 11)
# 指数操作:item = e^item
print(np.exp(lst))
# item = 2^item
print(np.exp2(lst))
# item = sqrt(item)
print(np.sqrt(lst))
# item = sin(item)
print(np.sin(lst))
# item = ln(item)
print(np.log(lst))
# 单个数组进行不同深度的运算,axis指定进行到哪种深度,最大取值为维数-1
lst = np.array([[[1, 2, 3, 4],
[5, 6, 7, 8]],
[[9, 10, 11, 12],
[13, 14, 15, 16]],
[[17, 18, 19, 20],
[21, 22, 23, 24]]
])
print(lst.sum())
print(lst.sum(axis=2))
print(lst.max())
print(lst.max(axis=1))
print(lst.min())
# 两个数组的运算,作用于对应位置元素
lst1 = np.array([1, 2, 3, 4])
lst2 = np.array([5, 6, 7, 4])
# 普通加减乘除,或者乘方
print(lst1 + lst2)
print(lst1 - lst2)
print(lst1 / lst2)
print(lst1 * lst2)
print(lst1 ** 2)
# 矩阵点乘
print(np.dot(lst1.reshape(2, 2), lst2.reshape(2, 2)))
# 数组层面的运算:并集
print(np.concatenate((lst1, lst2), axis=0))
print(np.hstack((lst1, lst2)))
# 合并成一个数组,合并前的数组作为结果数组的一个元素
print(np.vstack((lst1, lst2)))
# 分割数组
print(np.split(lst1, 4))
# 拷贝一个数组
print(np.copy(lst2))
# 线性方程组
def linearAlgebra():
# 单位矩阵
print(np.eye(3))
# 矩阵的逆
lst = np.array([[1, 2], [3, 4]])
print(inv(lst))
# 转置
print(lst.transpose())
# 行列式
print(det(lst))
# 特征值和特征向量:第一个元素指特征值,第二个指特征向量
print(eig(lst))
# 解线性方程组:x+2y=5,3x+4y=7
result = np.array([[5.], [7.]])
print(solve(lst, result))
if __name__ == '__main__':
ndarray_test()
arrays_test()
operations()
linearAlgebra()
# 其他更多的操作
numpy官网网站:http://www.numpy.org/
易百教程:https://www.yiibai.com/numpy