利用python进行数据分析——第四章 numpy基础:数组和矢量计算

python常见的数据类型有列表list、字典dict、元组tuple、数组array等。在数据分析中,常用的计算类型是数组array形式(或着说矩阵matrix形式,两者有一定的区别)。
numpy库是python中高性能科学计算和数据分析的基础包。可以通过pip进行安装:

pip install numpy
# 或者通过清华镜像进行安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy

然后导入numpy库

import numpy as np

创建数组

numpy进行创建数组很简单,它接受一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的NumPy数组
例如,将一个含有1,2,3,4,元素的列表,转换为一个2×2的二维数组。

data_list = [1,2,3,4]
arr_1 = np.array(data_list).reshape(2,2)

输入arr_1和type(arr_1)、arr_1.shape查看arr_1的结果,类型和维度

arr_1
'''array([[1, 2],
       [3, 4]])'''
type(arr_1)
'''numpy.ndarray'''
arr_1.shape
'''(2, 2)'''

reshape方法确定list转化的数组维度,如果不指定维度,将产生一维的数组:

arr_2 = np.array(data_list)

查看arr_2及其类型和维度

arr_2
'''array([1, 2, 3, 4])'''
type(arr_2)
'''numpy.ndarray'''
arr_2.shape
'''(4,)'''

数组计算

现实中的一些数据可能是几千×几千或者万级单位的数组,具有很大的数据量。对数组进行运算,具有高效快速的好处。
数组索引取出部分值
例如:取出arr_1的第一行所有元素

arr_1[0]
# 得到的结果是
array([1, 2])

取出第一行第一列的元素

arr_1[0][0]
# 得到的结果是
1

取出arr_2的第1至第3个元素(切片)

arr_2[0:3]
# 得到的结果是
array([1, 2, 3])

数组(矢量)与标量计算
例如:arr_1乘上一个常数,如arr_1×2:

arr_1*2
# 得到的结果是arr_1中的每个元素都乘以2:
array([[2, 4],
       [6, 8]])

数组平方和开平方

# 平方
np.sqaure(arr_1)
# 得到的结果是
array([[ 1,  4],
       [ 9, 16]], dtype=int32)
# 开平方
np.sqrt(arr_1)
# 得到的结果是
array([[1.        , 1.41421356],
       [1.73205081, 2.        ]])

数组间的运算
数组基本运算有加、减、乘、除、内积等。

# 数组相加
arr_3 = np.array([1,1,1,1]).reshape(2,2)
arr_1+arr_3
# 得到结果为对应位置元素相加,减法同加法,对应位置相减
array([[2, 3],
       [4, 5]])
# 数组相乘
arr_1*arr_3
# 得到结果为对应位置相乘,除法同
array([[1, 2],
       [3, 4]])
# 数组内积
np.dot(arr_1,arr_3)
# 2×2的数组与2×2的数组内积,结果仍是2×2的数组
array([[3, 3],
       [7, 7]])
# 不同维度的数组相加
arr_4 = np.array([1,2])
arr_1+arr_4
# 2×2的数组与1×2的数组相加,每一行与改一维数组进行相同位置的元素相加(减法同),结果如下
array([[2, 4],
       [4, 6]])
arr_1*arr_4
# 2×2的数组与1×2的数组相乘,每一行与改一维数组进行相同位置的元素相乘(除法同),结果如下
array([[1, 4],
       [3, 8]])

另外还有其他一些函数,如转置、求逆,取对角线元素,求绝对值,最大、小值,求元素和等。

numpy的数值数组运算基本和矩阵的运算法则一样。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
线性代数中常用的一些方法
在这里插入图片描述

参考:
《利用python进行数据分析》Wes McKinney著,唐学韬译,机械工业出版社,2013.9. ISBN: 978-111-43673-7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值