array用法 numpy_NumPy总结(基础用法)
numpy可以说是Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas,sklearn等一些Python机器学习和科学计算库,因此在此总结一下常用的用法。引入numpy库的方式:import numpy as np
1、numpy数组(array)的创建
通过array方式创建,向array中传入一个list实现
一维数组的创建:二维数组的创建:传入一个嵌套的list即可,如下例
通过arange创建数组:下例中创建一个0~1间隔为0.1的行向量,从0开始,不包括1,第二个例子通过对齐广播方式生成一个多维的数组。
通过linspace函数创建数组:下例中创建一个0~1间隔为1/9的行向量(按等差数列形式生成),从0开始,包括1.
通过logspace函数创建数组:下例中创建一个1~100,有20个元素的行向量(按等比数列形式生成),其中0表示10^0=1,2表示10^2=100,从1开始,包括100生成特殊形式数组:
生成全0数组(zeros()函数),生成全1数组(ones()函数), 仅分配内存但不初始化的数组(empty()函数)。注意要指定数组的规模(用一个元组指定),同时要指定元素的类型,否则会报错生成随机数组
通过frombuffer,fromstring,fromfile和fromfunction等函数从字节序列、文件等创建数组,下例中生成一个9*9乘法表
2、显示、创建、改变的数组元素的属性、数组的尺寸(shape)等
3、改变数组的尺寸(shape)
reshape方法,第一个例子是将43矩阵转为34矩阵,第二个例子是将行向量转为列向量。注意在numpy中,当某个轴的指定为-1时,此时numpy会根据实际的数组元素个数自动替换-1为具体的大小,如第二例,我们指明了c仅有一列,而b数组有12个元素,因此c被自动指定为12行1列的矩阵,即一个12维的列向量。
4、元素索引和修改
简单的索引形式和切片:
当使用布尔数组b作为下标存取数组x中的元素时,将收集数组x中所有在数组b中对应下标为True的元素。使用布尔数组作为下标获得的数组不和原始数组共享数据空间,注意这种方式只对应于布尔数组(array),不能使用布尔列表(list)。(附注:当布尔数组的长度与被索引的数组的长度短时,不足的部分都当作False)利用条件进行索引:利用不等式等进行索引
多维数组的索引和切片(右边框图中的颜色和左边的指令的颜色相对应):同样的,可以采用bool型的方式对数组进行索引和切片操作
其实多维数组的索引还是很好理解的,例如下例中,我们可以看到对于一个张量,也就是b,对其索引是,[i,j,k]中的i表示选择第几个二维数组,然后j表示取二维数组中的第几个行向量,k表示取行向量中的第几个元素。
5、ufunc操作
ufunc是universal function的缩写,它是一种能对数组的每个元素进行操作的函数。 numPy内置的许多ufunc函数都是在C语言级别实现的,因此它们的计算速度非常快。下面给一个计算sin函数(sin函数计算数组中全部元素的sin值)的小实例:四则运算符可以直接用于数组(一维或多维)计算:
比较操作也可直接进行,如下,比较x1和x2各对应元素的大小,返回的是一个bool型数组。同理,可用的操作符有 ‘==’,‘!=’,‘’,‘<=’,‘>=’等。另外可以使用数组的any()或all()方法。只要数组中有一个值为True,则any()返回True;而只有数组的全部元素都为True,all()才返回True。
想要了解更多的numpy自带的ufunc函数,可以查看这篇博客:自定义ufunc函数:frompyfunc(func,nin,nout)函数可以将计算单个值的函数转换成一个可对数组中每个元素进行计算的ufunc函数。其中nin是输入func的参数的个数,nout是func返回值的个数。如下例。
reduce方法(与Python的reduce函数类似,其沿着axis轴对array进行操作)
accumulate方法(其作用和reduce方法类似,但是会保存中间结果)
outer方法(对其两个参数数组的每两对元素的组合进行运算,计算外积):若数组a的维数为M,数组b的维数为N,则ufunc函数op的outer()方法对a、b数组计算所生成的数组c的维数为M+N,c的形状是a、b的形状的结合。例如a的形状为(2,3),b的形状为(4,5),则c的形状为(2,3,4,5)。
6、广播操作
广播是针对形状不同的数组的运算采取的操作。
当我们使用ufunc函数对两个数组进行计算时,ufunc函数会对这两个数组的对应元素进行计算,因此它要求这两个数组有相同的大小(shape相同)。如果两个数组的shape不同的话(行列规模不等),会进行如下的广播(broadcasting)处理:
1). 让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐。因此输出数组的shape是输入数组shape的各个轴上的最大值(往最大轴长上靠)。
2). 如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错。
3). 当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值。
感觉说的不太明白,于是还是用实例说话好了。
7、矩阵运算矩阵乘法(dot乘法,注意要符合矩阵乘法规则)内积(inner,计算向量/矩阵内积):和dot乘积一样,对于两个一维数组,计算的是这两个数组对应下标元素的乘积和;对于多维数组a和b,它计算的结果数组中的每个元素都是数组a和b的最后一维的内积,因此数组a和b的最后一维的长度必须相
计算公式为:inner(a, b)[i,j,k,m] = sum(a[i,j,:]*b[k,m,:])外积(outer,计算外积):只按照一维数组进行计算,如果传入参数是多维数组,则先将此数组展平为一维数组之后再进行运算。outer乘积计算的列向量和行向量的矩阵乘积
解线性方程组(solve):solve(a,b)有两个参数a和b。a是一个N*N的二维数组,而b是一个长度为N的一维数组,solve函数找到一个长度为N的一维数组x,使得a和x的矩阵乘积正好等于b,数组x就是多元一次方程组的解。
8、文件存取(假设有数组array为a,假定类型为int32)
a.tofile(file_name) ,保存a到file_name文件中,file_name为字符串类型,如‘a.txt’等;从文件中读回a数组时需要指明类型,如b=np.fromfile(file_name,dtype=np.float)时会报错,正确的使用方式是b=np.fromfile(file_name,dtype=np.int32)
save和load方法(写入文件和从文件读回都不需要指明类型,存储文件类型为npy格式文件):
np.save(“a.npy”, a) # 将array a存入a.npy文件中
c = np.load( “a.npy” ) # 从a.npy文件中读回array asavetxt和loadtxt方法(保存为txt格式文件):
np.savetxt(“a.txt”, a) # 将array a存入a.txt文件中
np.loadtxt(“a.txt”) # 从a.txt文件中读回array a
相关文章:

python 字符串 转 dict
比直接eval更好的方法>>>import ast >>>ast.literal_eval("{muffin : lolz, foo : kitty}") {muffin:lolz,foo:kitty} 用 json 遇到问题: >>> import json json.loads({"x": 1,"y":2}) {uy: 2, ux: 1…

rhino-java中调用javascript
2019独角兽企业重金招聘Python工程师标准>>> 在有些情况下需要在java里面执行javascript,这时rhino就可以帮忙了。mozilla的一个开源产品。 官网https://developer.mozilla.org/en-US/docs/Rhino 之前的一篇博客http://my.oschina.net/yybear/blog/101…

HDU 2566 统计硬币
统计硬币 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9633 Accepted Submission(s): 6505 Problem Description 假设一堆由1分、2分、5分组成的n个硬币总面值为m分,求一共有多少种可能的组合方式&…

linux C 多线程编程
文章目录多线程的一些小知识:1创建线程 pthread_create2线程挂起 pthread_join3线程终止 pthread_exit4线程分离 pthread_detach5线程取消 pthread_cancel线程同步 pthread_mutex_t互斥变量我们在写linux的服务的时候,经常会用到linux的多线程技术以提高…

JavaSE replaceAll 方法
private String srcStr "index\\.php\\?action";//要替换的原字符串 private String destStr "index.php?<{\\$LANGUAGE_TYPE}>action";//目的字符串 注意.和?都要转义,因此需要在前面添加两个反斜杠。 关于第二个参数,$…

elementui datetimepicker 移动端_在 Gitee 收获 2.5K Star,前后端分离的 RuoYi 它来了
作为 2019 年 Gitee 上最受欢迎的开源项目,权限管理系统 RuoYi 已经在 Gitee 上获得了超过 11K 的 Star。 这次作者若依推出了基于 SpringBoot Vue Element UI 的前后端分离版本的 RuoYi-Vue,方便有前后端分离开发需求的同学使用。项目名称:…

用MyEclipse开发Spring入门
1 新建一个项目 File----->New ----->Project 在出现的对话框中选择 MyEclipse 下的 Web Project,在Project Name 输入mySpring1,其他的选项默认,再点Finish完成; 2 加入Spring 包 在myspring1 项目上点右键,选…

带你轻而易举的学习python——八皇后问题
首先我们来看一下这个著名的八皇后问题 八皇后问题:在88格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 在这个问题提出之后人们又将它扩展到了nn格的棋盘摆…

ubuntu18.04.1内核升级至5.0.0-25版本
ubuntu18.04操作系统版本先已支持在线的内核版本升级,到目前为止18.04发布版已经拥有三个小版本了1,2,3。 其中18.04.01和18.04.03版本,安装好之后默认的是4.15内核版本,但是默认支持在线安装4.18和5.0.0内核版本。 具体升级步骤如下&#x…

输出n行杨辉三角数
1 /*2 输出n行杨辉三角数 3 输入n,n是1~100之间的整数 4 */5 #include<stdio.h>6 int main()7 {8 int a[100],b[100];9 int i,j; 10 int n; 11 scanf("%d",&n); 12 if(n1) 13 { 14 printf("1\…

怎么扫描_打印机上扫描仪怎么用 打印机上扫描仪使用及添加方法
打印机是生活中常用的打印设备,主要用于连接 电脑 打印电脑上的文件,方便办公。对于第一次使用打印机的朋友可能还不是很熟悉如何使用,比如打印机上 扫描仪 怎么用?怎么添加打印机扫描仪?下面小编就来为大家介绍下吧。…

java 调用webservice的各种方法总结
http://www.blogjava.net/zjhiphop/archive/2009/04/29/webservice.html 现在webservice加xml技术已经逐渐成熟,但要真正要用起来还需时日!! 由于毕业设计缘故,我看了很多关于webservice方面的知识,今天和大家一起来研究研究webservice的…

vc++图像保存,重绘
新建mfc应用程序,单文档 增加绘图 分别增加命令响应 添加成员变量UINIT 图形可以运行,如何保存呢?(一个集合类,CPtArt) 用一个类的对象来保存一个图形的三个要素 所以插入一个新的类(通常的类&a…

linux 进程内存分布及 堆分配和栈分配的特点
文章目录进程内存空间分布size命令查看内存分布堆方式内存分配和栈方式内存分配比较使用stap 深入追踪malloc逻辑进程内存空间分布 一个程序的内存空间主要如下: 代码段(text segment):只读权限;常是指用来存放程序执行代码的一块内存区域&…

echarts 坐标自适应_echarts 同一页面,多个图表 页面大小自适应
// 路径配置require.config({paths: {echarts: ./js}});// 使用require([echarts,echarts/chart/line, // 折线图echarts/chart/bar // 柱状图],function (ec) {var myChart ec.init(document.getElementByIdx_x(main));var myChartx ec.init(document.getElementByIdx_x(main…

opencv——pcb上寻找mark点(拟合椭圆的方法)
#include "stdafx.h" // FitCircle.cpp : 定义控制台应用程序的入口#include "cv.h" #include "highgui.h" #include "cxcore.h" #include "cvaux.h" #include <iostream>using namespace cv; using namespace std; v…

bit,Byte、KB、MB、GB、TB、PB、EB之间的关系
计算机存储信息的最小单位,称之为位(bit),音译比特,二进制的一个“0”或一个“1”叫一位;计算机存储容量基本单位是字节(Byte),音译为拜特,8个二进制位组成1个…

echarts 点亮中国插件研究
echarts 真的是个神奇的东西,最近做了一个需要点亮中国的移动端项目,前期就怎样点亮中国做了调研,发现微博当初炫酷的点亮效果就是用echarts做的,于是研究了一下。 一连研究了一堆demo,不管从官网还是GitHub上面&#…

linux进程间通信:无名管道 pipe
文章目录内核层实现结构通信原理特点使用函数声明使用实例单向通信双向通信编程注意事项管道中无数据时读操作会阻塞将管道的写端句柄关闭,不会影响读端数据读取管道中没有数据,写操作关闭则读操作会立即返回管道大小测试 64K管道发生写满阻塞࿰…

争吵所达到的效果要_悟空:不要害怕争吵,有时候争吵一些不喜欢的事情也能创造和谐...
悟空:八戒,你吃了早饭去把马喂了吧。八戒:好的。悟空:喂了马你去看看我们午饭可以吃什么,如果有需要提前做预备的什么事儿,你知道该怎么做吧?八戒:好的。悟空:昨天&#…

Log4j日志管理的用法
参考网址: http://www.blogjava.net/314508313/archive/2011/11/14/363653.html http://www.cnblogs.com/likwo/archive/2010/09/01/1814994.html http://fanqiang.chinaunix.net/app/other/2006-06-22/4640.shtml http://www.blogjava.net/rickhunter/articles/281…

多线程实现生产者消费者模型
首先是一个仓库接口,该接口规定的仓库大小,仓库的存取方法,如下所示 1 package pers.lan.jc.pc;2 3 /**4 * author lan [1728209643qq.com]5 * create 2018-11-27 15:596 * desc 仓库7 */8 public interface Repertory<T> {9 10 …

再记一次ceph object unfound的艰辛历程
文章目录先说问题:再说解决尝试1:尝试2(该尝试建议先在自己环境搭配对应业务测试通过后再现场尝试):感谢 学无止境996同学的陪伴和vigourtyy美丽女友的支持,直到这个解决问题的深夜先说问题: ceph 12.2.1生产环境&…

2014-01-04 SQL练习
目标数据库 250,czzznew/czzznew *关于执行计划:在PL/SQL选中查询的语句后,按下F5即可,其中Cost列表示当前操作的代价(消耗),值越大代表性能越差 t_rkxx表 (1):用2种以上方法查出xm(姓名)为test或者Test的人…

多重集表示合json数据_计数DP(划分数,多重集组合数)
划分数:把n个无区别的物品划分成不超过m组。 dp[i][j]j的i划分的总数。 dp[i[j]dp[i][j-i]dp[i-1][j] 即:将j个物品分成i份,有两种情况:每份划分都大于等于1 dp[i][j-i]; 存在有一份以上用0划分dp[i-1][j]int main(){int n,m;cin&…

搭建PHP环境遇到的问题!!
为什么80%的码农都做不了架构师?>>> 问题1: 再次./configure以下错误发生 configure: error: xml2-config not found. Please check your libxml2 installation. 解决方法: 安装libxml2 # yum install libxml2-devel 问题2&…

linux进程间通信:shell管道 | 的实现
文章目录介绍重定向函数介绍总结linux terminal输入如下命令,其中"|"符号即为我们上文中所说的无名管道介绍 正如我们上文中所描述的"|“无名管道提供了具有亲缘关系的进程之间的通信,它由于直接使用系统调用,运行效率较高。…

Golang的接口
当一只鸟走路像鸭子,游泳像鸭子,叫起来也像鸭子,那么我们就认为它就是鸭子。 Duck typing 的理念因此比喻得名。 Golang 通过 interface 实现 duck typing。 Effective Go 文章中这样描述 interface: interface 指定了一种描述对象行为的方法…

mysql 5.6.15_mysql-5.6.15-win32.zip免安装配置
此随笔是根据网上的资料整理的:环境:Windows XP系统软件来源:mysql官网下载1.下载mysql-5.6.15-win32.zip;2.解压MySQL压缩包;以下以加压到“F:\Program Files\Mysql\mysql-5.6.15-win32”为例:3.将解压目录…

jquery treeview 树形插件
jquery treeview 插件参数说明 treeview开源地址:https://github.com/jzaefferer/jquery-treeview 1、animated:String or Number 设置展开子节点时的显示速度,有 slow、normal、fast 或者指定速度值,与 jQuery 的 hide࿰…