前言

numpy是python的科学计算模块,底层实现用c代码,运算效率很高。numpy的核心是矩阵narray运算。

narray介绍

  • 矩阵拥有的属性

ndim属性:维度个数

shape属性:维度大小

dtype属性:数据类型

常用矩阵创建方法

import numpy as np
# 由列表转化
np.array([[1,2],[3,4]])
# 创建多维随机浮点数矩阵,区间0.0 ~ 1.0
arr = np.random.rand(3, 4)
# 创建多维整数矩阵,指定随机区间
arr = np.random.randint(-1, 5, size = (3, 4))
# 创建多维随机浮点数矩阵,指定区间
np.random.uniform(-1, 5, size = (3, 4))
# 创建全是0的矩阵
np.zeros((3,4))
# 仿照一个矩阵的形状和类型创建0矩阵
np.zeros_like([3,4])
# 创建1的矩阵
np.ones((3,4))
#仿照一个矩阵的形状和类型创建1矩阵
np.ones_like((3,4))
# 创建随机值
np.empty((3,4))
# 对原来矩阵打乱顺序
np.random.shuffle(arr)

常用基础运算方法

如果python代码中有很多涉及数学运算的操作,使用numpy是一种很好的提高运算效率的方法。

import numpy as np

np.sum()           # 计算矩阵元素的和
np.mean() # 计算平均值
np.e # 自然数e
np.pi # 自然数π
np.abs() # 计算绝对值,可以是数组
np.std(li) # 计算标准差
np.var() # 计算方差
np.max() # 计算最大值
np.min() # 计算最小值
np.cov(a,b) # 计算协方差,得到矩阵,去[0,1]或[1,0]位置的为协方差
np.alen(a) # 计算矩阵的长度,多维矩阵计算第一列的长度,即列数
np.argmax() # 返回最大索引下标值
np.argmin() # 返回最小索引下标值
np.ceil(): # 向上最接近的整数,参数是 number 或 array
np.floor(): # 向下最接近的整数,参数是 number 或 array
np.rint(): # 四舍五入,参数是 number 或 array
np.isnan(): # 判断元素是否为 NaN(Not a Number),参数是 number 或 array,返回布尔矩阵
np.multiply(arr1, arr2): # 对应元素相乘,参数是 number 或 array
np.divide(arr1, arr2): # 元素相除,参数是 number 或 array
np.where(condition, x, y): # 三元运算符,x if condition else y
np.any(): # 至少有一个元素满足指定条件,返回True
np.all() # 所有的元素满足指定条件,返回True np.unique() # 去除重复值并返回上升的排序结果 v = np.who({'aaa':arr1}) # 打印arr的相关属性

矢量的加减乘

arr1 = np.random.randint(0,10,size=(3,4))
print(arr1*arr1) # 相对应元素相乘
print(arr1+arr1) # 对应元素相加
print(arr1-arr1) # 对应元素相减

布尔判断

arr1 = np.random.randint(0,10,size=(2,3))
print(arr1 < 5) [[False False False]
[False True False]]

矩阵转换

# 多维使用数字表示维数,0,1,2,3代表四维
arr = np.random.rand(2,3) # 2x3 数组
print(arr.transpose()) # 转换为 3x2 数组,默认规则行列交换
arr.transpose((3,2,1,0)) # 行和列交换
arr1 = arr.T # 行列交换 # 从原来矩阵按规则产生新矩阵
np.take()
>>> a = [4, 3, 5, 7, 6, 8]
>>> indices = [0, 1, 4]
>>> np.take(a, indices)
array([4, 3, 6])
>>> np.take(a, [[0, 1], [2, 3]])
array([[4, 3],
[5, 7]]) # 在不改变数据的情况下改变矩阵形状
np.reshape()
>>> np.reshape(a, (2, 3))
array([[0, 1, 2],
[3, 4, 5]]) # 数据复制
np.repeat()
>>> np.repeat(3, 4)
array([3, 3, 3, 3])

读取数据文件

从txt文件中加载矩阵数据。

data_array = np.loadtxt(filename,  # 文件名
delimiter=',', # 分隔符
dtype=int, # 数据类型,指的是生成的矩阵的数据类型
usecols=(0,1)) # 指定读取的列号

参考

python第三方库之numpy基础的更多相关文章

  1. Python第三方库之Numpy库

    概述 Numpy  最基本的库,是用于处理含有同种元素的多维数组运算的第三方库 —科学计算包,python数据分析及科学计算的基础库,几乎支撑所有其他库 —支持N维数组运算.处理大型矩阵.成熟的广播函 ...

  2. 【Python基础】安装python第三方库

    pip命令行安装(推荐) 打开cmd命令行 安装需要的第三方库如:pip install numpy 在安装python的相关模块和库时,我们一般使用“pip install  模块名”或者“pyth ...

  3. Python第三方库matplotlib(2D绘图库)入门与进阶

    Matplotlib 一 简介: 二 相关文档: 三 入门与进阶案例 1- 简单图形绘制 2- figure的简单使用 3- 设置坐标轴 4- 设置legend图例 5- 添加注解和绘制点以及在图形上 ...

  4. Python第三方库资源

    [转载]Python第三方库资源   转自:https://weibo.com/ttarticle/p/show?id=2309404129469920071093 参考:https://github ...

  5. 常用Python第三方库 简介

    如果说强大的标准库奠定了python发展的基石,丰富的第三方库则是python不断发展的保证,随着python的发展一些稳定的第三库被加入到了标准库里面,这里有6000多个第三方库的介绍:点这里或者访 ...

  6. python第三方库自动安装脚本

    #python第三方库自动安装脚本,需要在cmd中运行此脚本#BatchInstall.pyimport oslibs = {"numpy","matplotlib&qu ...

  7. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...

  8. 安装python第三方库

    前言 接触python编程很晚,基础语法比较好理解,但是用起来还是需要用心的,特别是可能会用到许多第三方库,本文就介绍一下python第三方库的安装. 环境 系统环境:win7_64; Python版 ...

  9. Python第三方库wordcloud(词云)快速入门与进阶

    前言: 笔主开发环境:Python3+Windows 推荐初学者使用Anaconda来搭建Python环境,这样很方便而且能提高学习速度与效率. 简介: wordcloud是Python中的一个小巧的 ...

随机推荐

  1. 第202天:js---原型与原型链终极详解

    一. 普通对象与函数对象 JavaScript 中,万物皆对象!但对象也是有区别的.分为普通对象和函数对象,Object .Function 是 JS 自带的函数对象.下面举例说明 var o1 = ...

  2. BZOJ 2004 公交线路(状压DP+矩阵快速幂)

    注意到每个路线相邻车站的距离不超过K,也就是说我们可以对连续K个车站的状态进行状压. 然后状压DP一下,用矩阵快速幂加速运算即可. #include <stdio.h> #include ...

  3. BZOJ 1066:[SCOI2007]蜥蜴(最大流)

    蜥蜴Description在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到 ...

  4. 【bzoj4695】最假女选手 线段树区间最值操作

    题目描述 给定一个长度为 N 序列,编号从 1 到 N .要求支持下面几种操作:1.给一个区间[L,R] 加上一个数x 2.把一个区间[L,R] 里小于x 的数变成x 3.把一个区间[L,R] 里大于 ...

  5. BZOJ3551 ONTAK2010Peaks加强版(kruskal重构树+dfs序+主席树)

    kruskal重构树本质就是给并查集显式建树来替代可持久化并查集.将边按困难度从小到大排序后建出该树,按dfs序建主席树即可.查询时跳到深度最浅的满足在该重要度下已被合并的点,在子树内查询第k大. # ...

  6. 基于注解的spring mvc 中使用 ajax json 的model

    在 Spring mvc3中,响应.接受 JSON都十分方便. 使用注解@ResponseBody可以将结果(一个包含字符串和JavaBean的Map),转换成JSON. 使用 @RequestBod ...

  7. Yura

    Portal --> broken qwq Description ​  给你一个长度为\(n\)的序列\(a\)和一个正整数\(k\),求满足如下条件的区间\([l,r]\)的数量:\((\s ...

  8. 【poj2068】Nim

    Portal -->poj2068 Description ​  给你\(S\)个石子,有\(2n\)个人分成两队,编号为奇数的一队,编号为偶数的一队,\(2n\)个人按照编号从小到大的顺序拿石 ...

  9. 【bzoj4811】由乃的OJ

    Portal --> bzoj4811 Solution  这题可以用树剖+线段树做也可以用LCT做,不过大体思路是一样的  (接下来先讲的是树剖+线段树的做法,再提LCT的做法) ​  首先位 ...

  10. Udp打洞原理和源代码。

    所谓udp打洞就是指客户端A通过udp协议向服务器发送数据包,服务器收到后,获取数据包,并且 可获取客户端A地址和端口号.同样在客户端B发送给服务器udp数据包后,服务器同样在收到B发送过来 的数据包 ...