【Python】数据分析之numpy包

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28869927/article/details/83281094

numpy使用示例

前言

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

猜你喜欢

转载自blog.csdn.net/qq_28869927/article/details/83281094