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零基础入门学习资料 ...
随机推荐
- Filenames and paths
Files are organized into directories (also called ‘folders’). Every running program has a ‘current d ...
- 7.stack
#include <iostream> #include <stack> #include <algorithm> #include <list> #i ...
- 关于Mantle使用个人的一些见解
前一个月,我接触到了Mantle,由于项目采用的是MVC的设计模式,选用好的model也是至关重要的.先介绍下Mantle的使用吧. 首先定义好数据模型: @property (nonatomic, ...
- hdu 1022 - 数据结构 栈
题目链接 按序列a进栈,问能不能按序列b出栈. 遍历b,如果当前元素进过栈了,那么必须和栈顶元素相同.如果没进过栈则按a序列压栈,直到遇到当前元素. #include <iostream> ...
- 我所理解的monad(1):半群(semigroup)与幺半群(monoid)
google到数学里定义的群(group): G为非空集合,如果在G上定义的二元运算 *,满足 (1)封闭性(Closure):对于任意a,b∈G,有a*b∈G (2)结合律(Associativit ...
- jQuery实现tab标签切换效果
技巧一.jQuery :eq() 选择器 定义和用法 :eq() 选择器选取带有指定 index 值的元素. index 值从 0 开始,所有第一个元素的 index 值是 0(不是 1). 经常与其 ...
- NodeJS学习笔记 进阶 (1)Nodejs进阶:服务端字符编解码&乱码处理(ok)
个人总结:这篇文章主要讲解了Nodejs处理服务器乱码及编码的知识,读完这篇文章需要10分钟. 摘选自网络 写在前面 在web服务端开发中,字符的编解码几乎每天都要打交道.编解码一旦处理不当,就会出现 ...
- 《转载》编程入门指南 v1.4
编程入门指南 v1.4 Badger · 8 个月前 作者:@萧井陌, @Badger 自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 CoCode ...
- FastDFS学习总结(2)--Tracker与Storage配置详解
1.Tracker基本配置 # is this config file disabled # false for enabled # true for disabled disabled=false ...
- easyui combobox 设置值 顺序放在最后
easyui combobox 设置值 顺序放在最后 如果设置函数.又设置选中的值,注意顺序, 设置值需要放到最后,否则会设置了之后又没有了: $('#spanId'+i).combobox(res) ...