《利用python进行数据分析》——Numpy基础
一、创建数组
1、创建数组的函数
- array:将输入数据(列表、元组、数组或其他序列类型)转换为ndarray,可用dtype指定数据类型。
>>> import numpy as np
>>> a=np.array([1,2,3])
>>> a
array([1, 2, 3])
>>> c=np.array([1,2,3],dtype=float) #使用的type指定数据类型
>>> c
array([ 1., 2., 3.])
>>> c=c.astype(int) #使用astype更改数据类型
>>> c
array([1, 2, 3])
- arange:类似于range,但返回的不是列表而是ndarray。
>>> g=np.arange(5)
>>> g
array([0, 1, 2, 3, 4])
>>> k=np.arange(6).reshape(2,3)
>>> k
array([[0, 1, 2],
[3, 4, 5]])
- ones、ones_like:创建全是1的数组。
>>> c=np.ones((2,3),dtype=np.int)
>>> c
array([[1, 1, 1],
[1, 1, 1]]) >>> d=np.ones_like(c) #d的形状和dtype与c相同
>>> d
array([[1, 1, 1],
[1, 1, 1]])
- zeros、zeros_like:创建全是0的数组。
>>> f=np.zeros((2,3,2))
>>> f
array([[[ 0., 0.],
[ 0., 0.],
[ 0., 0.]], [[ 0., 0.],
[ 0., 0.],
[ 0., 0.]]]) >>> g=np.zeros_like(f) #g的形状和dtype与f相同
>>> g
array([[[ 0., 0.],
[ 0., 0.],
[ 0., 0.]], [[ 0., 0.],
[ 0., 0.],
[ 0., 0.]]])
- empty,empty_like:创建新数组,只分配内存但不填充任何值。
注:empty数据并不是空的数组,也不是全为0的数组,它返回的是一些未初始化的垃圾值。
>>> k=np.empty((2,3))
>>> k
array([[ 6.23042070e-307, 3.56043053e-307, 1.37961641e-306],
[ 8.06612192e-308, 2.22523004e-307, 2.44031977e-312]])
>>> g=np.empty_like(k) #g的形状和dtype与k相同
>>> g
array([[ 6.23042070e-307, 3.56043053e-307, 1.37961641e-306],
[ 8.06612192e-308, 2.22523004e-307, 2.44031977e-312]])
- eye、identity:创建一个正方的N*N的单位矩阵(对角线为1,其他为0)
np.eye(N, M=None, k=0, dtype=<type ‘float’>)
可以创建矩形矩阵,且k值可以调节,为1的对角线的位置偏离度,0居中,1向上偏离1,2偏离2,以此类推,-1向下偏离。值绝对值过大就偏离出去了,整个矩阵就全是0了。
>>> l=np.eye(3,4,1) #3行4列,为1的对角线向上移一位
>>> l
array([[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]]) >>> l1=np.eye(3,3,-1) #3行3列,为1的对角线向下移一位
>>> l1
array([[ 0., 0., 0.],
[ 1., 0., 0.],
[ 0., 1., 0.]]) >>> j=np.identity(3) #创建方形单位矩阵(对角线为1,其余为0)
>>> j
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
2、Numpy的数据类型
3、 查看数组维度、数组形状、数据类型
>>> a=np.random.randn(4,3)
>>> a
array([[-1.67075275, -0.53713536, -1.54479383],
[-0.95460603, 2.097174 , -0.61332423],
[-1.92818377, -0.00663392, 1.34561876],
[ 0.54646619, -0.85965155, -0.70237827]]) >>> a.ndim #查看维度
2 >>> a.shape #查看形状
(4, 3) >>> a.dtype #查看数据类型
dtype('float64')
二、索引、切片
- 利用行列号索引、切片
>>> a
array([[0, 1, 2],
[3, 4, 5]]) >>> a[0]
array([0, 1, 2]) >>> a[0][2]
2 >>> a[0][1:]
array([1, 2]) >>> a[:,:1]
array([[0],
[3]]) >>> a[:,:2]
array([[0, 1],
[3, 4]])
- 利用整数数组做花式索引
>>> a=np.arange(20).reshape(5,4)
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19]]) >>> a[[0,2,4]] #选取第0,2,4行元素
array([[ 0, 1, 2, 3],
[ 8, 9, 10, 11],
[16, 17, 18, 19]]) >>> a[[0,2,1],[1]] #意为选取(0,1),(2,1),(1,1)的元素
array([1, 9, 5]) >>> a[[0,2,1]][:,[2,0]]#意为选取0、2、1行,2,0列的元素
array([[ 2, 0],
[10, 8],
[ 6, 4]])
- 条件索引
>>> a=np.random.randn(4,3)
>>> a
array([[-0.04603611, -1.04144497, 0.78488753],
[-0.06099172, 0.31987999, 0.62553966],
[-0.44534405, -0.33631437, 0.07821993],
[-0.56541056, -0.42975815, -0.65669226]]) >>> a[a<0]
array([-0.04603611, -1.04144497, -0.06099172, -0.44534405, -0.33631437,
-0.56541056, -0.42975815, -0.65669226]) >>> b=np.array(['rose','lily','tulips','hyacinth'])
>>> b==‘lily‘ #条件判断,返回布尔数组
array([False, True, False, False], dtype=bool) >>> a[b==‘lily’] #用布尔数组判断,返回布尔为true的行,注行数要与布尔数组的长度相同
array([[-0.06099172, 0.31987999, 0.62553966]]) >>> c=(b=='rose')|(b=='lily') #条件或写法,不能写成or
>>> c #多个条件判断
array([ True, True, False, False], dtype=bool)
>>> a[c]
array([[-0.04603611, -1.04144497, 0.78488753],
[-0.06099172, 0.31987999, 0.62553966]])
>>> b!='rose' #条件非写法
array([False, True, True, True], dtype=bool)
>>> f=(b=='rose')&(b=='lily') #条件与写法,不能写成and
>>> f
array([False, False, False, False], dtype=bool)
三、数组和标量间的运算
大小相等的数组间的算术运算会应用到元素级。
>>> a=np.arange(6).reshape(2,3)
>>> a
array([[0, 1, 2],
[3, 4, 5]]) >>> a*a
array([[ 0, 1, 4],
[ 9, 16, 25]]) >>> a+a
array([[ 0, 2, 4],
[ 6, 8, 10]])
>>> a-a
array([[0, 0, 0],
[0, 0, 0]]) >>> a/a
array([[ nan, 1., 1.],
[ 1., 1., 1.]]) >>> a*2
array([[ 0, 2, 4],
[ 6, 8, 10]]) >>> a/2
array([[ 0. , 0.5, 1. ],
[ 1.5, 2. , 2.5]]) >>> a**0.5
array([[ 0. , 1. , 1.41421356],
[ 1.73205081, 2. , 2.23606798]])
四、数组转置和轴对换
- T:转置
>>> a=np.arange(6).reshape(3,2)
>>> a
array([[0, 1],
[2, 3],
[4, 5]]) >>> a.T #转置
array([[0, 2, 4],
[1, 3, 5]])
- transpose:传入一个由轴编号组成的元组,对这些轴进行转置
>>> arr=np.arange(16).reshape(2,2,4)
>>> arr
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]], [[ 8, 9, 10, 11],
[12, 13, 14, 15]]]) >>> arr.transpose(0,2,1) #transpose(行、列、层)分别用数字0,1,2代表,arr.transpose(0,2,1)意为列、层对换
array([[[ 0, 4],
[ 1, 5],
[ 2, 6],
[ 3, 7]], [[ 8, 12],
[ 9, 13],
[10, 14],
[11, 15]]])
- swapaxes:接受一对轴编号
>>> arr.swapaxes(1,2) #接受一对轴编号,列、层对调
array([[[ 0, 4],
[ 1, 5],
[ 2, 6],
[ 3, 7]], [[ 8, 12],
[ 9, 13],
[10, 14],
[11, 15]]])
五、函数
- abs,fabs :计算整数、浮点数、复数的绝对值,对于非复数,fabs更快
>>> a=np.random.randn(3,4)
>>> a
array([[ 1.38259684, 1.5849254 , 0.4449462 , 0.2385593 ],
[ 1.00091383, -1.09375872, -0.02773304, 0.53630798],
[ 0.57737587, 1.60649999, -0.20384362, -1.22109508]])
>>> np.abs(a)
array([[ 1.38259684, 1.5849254 , 0.4449462 , 0.2385593 ],
[ 1.00091383, 1.09375872, 0.02773304, 0.53630798],
[ 0.57737587, 1.60649999, 0.20384362, 1.22109508]])
>>> np.fabs(a)
array([[ 1.38259684, 1.5849254 , 0.4449462 , 0.2385593 ],
[ 1.00091383, 1.09375872, 0.02773304, 0.53630798],
[ 0.57737587, 1.60649999, 0.20384362, 1.22109508]])
- sqrt:计算平方根
>>> b=np.arange(4).reshape(2,2)
>>> b
array([[0, 1],
[2, 3]]) >>> np.sqrt(b)
array([[ 0. , 1. ],
[ 1.41421356, 1.73205081]])
- square:计算平方
>>> b
array([[0, 1],
[2, 3]])
>>> np.square(b)
array([[0, 1],
[4, 9]], dtype=int32)
- exp计算指数
《利用python进行数据分析》——Numpy基础的更多相关文章
- 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片
概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...
- 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算
http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...
- 利用Python进行数据分析——Numpy基础:数组和矢量计算
利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...
- numpy 基础操作
Numpy 基础操作¶ 以numpy的基本数据例子来学习numpy基本数据处理方法 主要内容有: 创建数组 数组维度转换 数据选区和切片 数组数据计算 随机数 数据合并 数据统计计算 In [1]: ...
- Numpy 基础
Numpy 基础 参考https://www.jianshu.com/p/83c8ef18a1e8 import numpy as np 简单创建数组 # 创建简单列表 a = [1, 2, 3, 4 ...
- [转]python与numpy基础
来源于:https://github.com/HanXiaoyang/python-and-numpy-tutorial/blob/master/python-numpy-tutorial.ipynb ...
- python学习笔记(三):numpy基础
Counter函数可以对列表中数据进行统计每一个有多少种 most_common(10)可以提取前十位 from collections import Counter a = ['q','q','w' ...
- Numpy基础数据结构 python
Numpy基础数据结构 NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的元数据 1.一维数组 import numpy as np ar = np.a ...
- Python Numpy基础教程
Python Numpy基础教程 本文是一个关于Python numpy的基础学习教程,其中,Python版本为Python 3.x 什么是Numpy Numpy = Numerical + Pyth ...
- NumPy基础操作
NumPy基础操作(1) (注:记得在文件开头导入import numpy as np) 目录: 数组的创建 强制类型转换与切片 布尔型索引 结语 数组的创建 相关函数 np.array(), np. ...
随机推荐
- windows常用命令行命令
https://blog.csdn.net/qq_32451373/article/details/77743869 打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗 ...
- P1056 骑士游历
题目描述 给出一个8*8的空棋盘,其中行由a-h编号,列由1-8编号. 再给出起点和终点,问,骑士至少需要几步可以从起点移到终点.骑士是走日的.类似于中国象棋的马. 输入格式 输入两个字符串,每个字符 ...
- POJ 1511 Invitation Cards(逆向思维 SPFA)
Description In the age of television, not many people attend theater performances. Antique Comedians ...
- 2018-8-10-win10-uwp-MVVM-轻量框架
title author date CreateTime categories win10 uwp MVVM 轻量框架 lindexi 2018-08-10 19:17:19 +0800 2018-2 ...
- H3C查看文件内容
<H3C>more logfile.log 创建一个目录 <H3C>mkdir gaochengwang 重命名目录及文件 <H3C>rename wnt 0904 ...
- vue-learning:39 - router - vue-router的基本使用
vue-router路由的基本使用 一张图阐述vue-router的基本使用步骤 // 0. 如果全局使用CDN引入:vue 引入在前,vue-router引入在后 // <script src ...
- 头条面试题-创建一个Event类,并创建on、off、trigger、once方法
一.创建一个Event.js class Event { constructor() { this.handlers = { // 记录所有的事件和处理函数 } } /* * * on 添加事件监听 ...
- 微信小程序 image图片组件实现宽度固定 高度自适应
给img的mode设置值 注1:image组件默认宽度300px.高度225px 注2:image组件中二维码/小程序码图片不支持长按识别.仅在wx.previewImage中支持长按识别. mode ...
- Perl中的bless的理解
bless有两个参数:对象的引用.类的名称. 类的名称是一个字符串,代表了类的类型信息,这是理解bless的关键. 所谓bless就是把 类型信息 赋予 实例变量. [xywang@mnsdev13: ...
- c++ 知道旋转前后矩阵向量值 求旋转矩阵c++/c#代码 知道两个向量求他们的旋转矩阵
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/12115244.html 知道旋转前后矩阵向量值 如何去求旋转矩阵R 的c++/c#代码??? ...
- 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片