NumPy基础入门学习
对于习惯使用了MATLAB的用户而言,学习NumPy这个python工具包付出的成本应该是不大的。
NumPy的基本的object是多维数组,是一个有同样类型的数字等构成的一张表格,能够通过元组进行索引。本篇主要列出NumPy中最经常使用的一些操作。
1,ndarray 类型的一些属性
>>> from numpy import *
>>> a=array([[1,2,3],[4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>>
以上给出了怎么样初始化一个NumPy 数组。这个数组的类型,维度,包括元素的个数,元素类型。数据等都能够通过其对应的属性来得到
# 元素类型 ndarray.dtype
>>> a.dtype
dtype('int64')
>>>
# 维度 ndarray.shape
>>> a.shape
(2, 3)
#包括元素的个数 ndarray.size
>>> a.size
6
2。创建自己定义大小的数组。改变数组的shape
默认系统类型
>>> a=zeros((3,4))
>>> a
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
初始化数据的类型
>>> a=ones((5,4),dtype=int64)
>>> a
array([[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]])
>>> a.dtype
dtype('int64')
改变数组的shape reshape函数
>>> a=arange(15)
>>> a
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
>>> a.reshape((5,3))
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14]])
技巧:对于reshape这个函数,能够仅仅指定多少行,或者仅仅指定多少列。剩下的工作由这个函数提我们来做。提高操作的灵活性。
>>> a.reshape((5,:-1))
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14]])
>>> a.reshape((-1,5))
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
3,数组索引
1)通过指定元组来进行索引
>>> a=floor(10*random.random((5,4)))
>>> a
array([[ 4., 6., 4., 9.],
[ 4., 7., 2., 1.],
[ 4., 9., 7., 3.],
[ 5., 4., 6., 0.],
[ 4., 3., 2., 9.]])
>>> a[(1,1)]
7.0
>>> a[(3,2)]
6.0
2)一次索引多个元素
索引出多行,能够将下标存放在一个array里
>>> index=array([1,3,4]) #要索引1,3,4行
>>> a[index]
array([[ 4., 7., 2., 1.],
[ 5., 4., 6., 0.],
[ 4., 3., 2., 9.]])
>>> index=array([[1,2],[1,3]])
>>> b=a[index]
>>> b
array([[[ 4., 7., 2., 1.],
[ 4., 9., 7., 3.]], [[ 4., 7., 2., 1.],
[ 5., 4., 6., 0.]]])
>>> b.shape
(2, 2, 4)
以上操作都是对一行进行索引的。那么怎么去索引到第几行。第几列呢
>>> i=array([0,1,2,3])
>>> j=array([3,2,1,0])
>>> a[i,j]
array([ 9., 2., 9., 5.])
返回的是 一个一维矩阵。行存放在i 中。列存放在j中
如果要将返回的元素存放在2*2的矩阵中
>>> i=array([[0,1],[2,3]])
>>> j=array([[3,2],[2,1]])
>>> a[i,j]
array([[ 9., 2.],
[ 7., 4.]]
同一时候还支持 下面几种索引方式。与MATLAB相似
>>> a[:,1]
array([ 6., 7., 9., 4., 3.])
>>> a[:,3]
array([ 9., 1., 3., 0., 9.])
>>> a[1,:]
array([ 4., 7., 2., 1.])
>>> a[:,1:3]
array([[ 6., 4.],
[ 7., 2.],
[ 9., 7.],
[ 4., 6.],
[ 3., 2.]])
3,矩阵算术运算
>>> a
array([[ 4., 6., 4., 9.],
[ 4., 7., 2., 1.],
[ 4., 9., 7., 3.],
[ 5., 4., 6., 0.],
[ 4., 3., 2., 9.]])
>>> a.sum()
93.0
>>> a.sum(axis=0) #行相加
array([ 21., 29., 21., 22.])
>>> a.sum(axis=1) #列相加
array([ 23., 14., 23., 15., 18.])
>>> a.min()
0.0
>>> a.min(axis=0)
array([ 4., 3., 2., 0.])
>>> a.min(axis=1)
array([ 4., 1., 3., 0., 2.])
>>> a.max()
9.0
>>> a.max(axis=0)
array([ 5., 9., 7., 9.])
>>> a.max(axis=1)
array([ 9., 7., 9., 6., 9.])
数组之间算术运算
a+b; a-b
很多其它可參考:Tentative NumPy Tutorial
NumPy基础入门学习的更多相关文章
- 函数:我的地盘听我的 - 零基础入门学习Python019
函数:我的地盘听我的 让编程改变世界 Change the world by program 函数与过程 在小甲鱼另一个实践性超强的编程视频教学<零基础入门学习Delphi>中,我们谈到了 ...
- VBox&vmware虚拟机安装Linux及Linux基础入门学习
VBox&vmware虚拟机安装Linux及Linux基础入门学习 通过VMware workstation安装Linux 在安装虚拟机之前,我特意上网搜索了一下目前常使用的虚拟机软件,了解了 ...
- 【Python教程】《零基础入门学习Python》(小甲鱼)
[Python教程]<零基础入门学习Python>(小甲鱼) 讲解通俗易懂,诙谐. 哈哈哈. https://www.bilibili.com/video/av27789609
- Mybatis基础入门学习
Mybatis基础入门学习 mybatis架构分析 搭建测试mybatis架构 )下载并导入mybatis3.2.7.jar(架构),mysql-connector-java-5.1.7-bin.ja ...
- 《零基础入门学习Python》【第一版】视频课后答案第001讲
测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...
- 零基础入门学习Python(1)--我和Python的第一次亲密接触
前言 最近在学习Python编程语言,于是乎就在网上找资源.其中小甲鱼<零基础入门学习Python>试听了几节课,感觉还挺不错,里面的视频都是免费下载,小甲鱼讲话也挺幽默风趣的,所以呢,就 ...
- 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案
国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...
- 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案
初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...
- 大牛整理最全Python零基础入门学习资料
大牛整理最全Python零基础入门学习资料 发布时间:『 2017-11-12 11:56 』 帖子类别:『人工智能』 阅读次数:3504 (本文『大牛整理最全Python零基础入门学习资料 ...
随机推荐
- ListView实现丰富的列表功能
ListView实现丰富的列表功能 1.主布局activity_main.xml <?xml version="1.0" encoding="utf-8" ...
- DNS SOA NS区别
转自 http://bbs.51cto.com/thread-908637-1.html NS服务器里有两个比较重要的记录.一个叫SOA记录(起始授权机构) 一个叫NS(Name Server)记录( ...
- 当fastJson邂逅大写字段时
在项目中遇到了一件令人头疼的事.使用fastJson反序列化时下面的Json时,得到对象属性总为null(如下图),可能细心的朋友一看就知道问题出在哪里,没错!问题就出在返回的字段首字母给大写了.fa ...
- 数据分页jdbc+mysql实现
通过简单粗糙的功能不完善的客户管理案例体现jdbc+mysql的数据分页,与其说是管理系统,不如说就是一个jdbc数据分布的demo而已.但是话又说回来,麻雀虽小,五脏俱全.虽然是个小demo,但是其 ...
- 位运算与bitset
&运算 将两个数转化为二进制后,对应的位置上相同即取,通常取1,所以&通常情况下可以用来枚举子集 设x为表示集合的整数,那么这个整数有如下性质: x的子集整数y在数值上不会比x大.因 ...
- Ambari Confirm Hosts Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).解决 Permanently added 'hdp21,192. ...
- 20180929 北京大学 人工智能实践:Tensorflow笔记04
20180929 北京大学 人工智能实践:Tensorflow笔记03(2018-09-30 00:01)
- ArcGIS api for javascript——加入地图并显示当前地图范围
描述 这个示例使用Map.extent property属性接收地图范围的左下角和右上角坐标 "书签". 使用下列行创建地图: var map = new esri.Map(&qu ...
- [React Native] Use the SafeAreaView Component in React Native for iPhone X Compatibility
In this lesson, you will learn how to use the SafeAreaView component to avoid the sensor cluster (th ...
- openCV 和GDI画线效率对照
一. 因为项目须要,原来用GDI做的画线的功能.新的项目中考虑到垮平台的问题.打算用openCV来实现.故此做个效率对照. 二. 2点做一条线,来測试效率. 用了相同的画板大小---256*256的大 ...