对于习惯使用了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基础入门学习的更多相关文章

  1. 函数:我的地盘听我的 - 零基础入门学习Python019

    函数:我的地盘听我的 让编程改变世界 Change the world by program 函数与过程 在小甲鱼另一个实践性超强的编程视频教学<零基础入门学习Delphi>中,我们谈到了 ...

  2. VBox&vmware虚拟机安装Linux及Linux基础入门学习

    VBox&vmware虚拟机安装Linux及Linux基础入门学习 通过VMware workstation安装Linux 在安装虚拟机之前,我特意上网搜索了一下目前常使用的虚拟机软件,了解了 ...

  3. 【Python教程】《零基础入门学习Python》(小甲鱼)

    [Python教程]<零基础入门学习Python>(小甲鱼) 讲解通俗易懂,诙谐. 哈哈哈. https://www.bilibili.com/video/av27789609

  4. Mybatis基础入门学习

    Mybatis基础入门学习 mybatis架构分析 搭建测试mybatis架构 )下载并导入mybatis3.2.7.jar(架构),mysql-connector-java-5.1.7-bin.ja ...

  5. 《零基础入门学习Python》【第一版】视频课后答案第001讲

    测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...

  6. 零基础入门学习Python(1)--我和Python的第一次亲密接触

    前言 最近在学习Python编程语言,于是乎就在网上找资源.其中小甲鱼<零基础入门学习Python>试听了几节课,感觉还挺不错,里面的视频都是免费下载,小甲鱼讲话也挺幽默风趣的,所以呢,就 ...

  7. 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...

  8. 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...

  9. 大牛整理最全Python零基础入门学习资料

    大牛整理最全Python零基础入门学习资料 发布时间:『 2017-11-12 11:56 』     帖子类别:『人工智能』  阅读次数:3504 (本文『大牛整理最全Python零基础入门学习资料 ...

随机推荐

  1. Git-如何将已存在的项目提交到git

    1.首先在码云或者github上创建一个不带README.md的项目,然后复制远程库的地址(下面以码云为例): 2.进入本地已存在的项目目录:house  touch README.md //新建说明 ...

  2. Looping and dictionaries

    If you use a dictionary in a for statement, it traverses the keys of the dictionary. For example, pr ...

  3. Copying lists

    When you assign an object to a variable, Python copies the reference to the object. In this case a a ...

  4. POJ 2478 线性递推欧拉函数

    题意: 求sigma phi(n) 思路: 线性递推欧拉函数 (维护前缀和) //By SiriusRen #include <cstdio> using namespace std; # ...

  5. 继承—Car

    编写一个Car类,具有final类型的属性品牌,具有功能drive: 定义其子类Aodi和Benchi,具有属性:价格.型号:具有功能:变速: 定义主类E,在其main方法中分别创建Aodi和Benc ...

  6. <Sicily>Huffman coding

    一.题目描述 In computer science and information theory, a Huffman code is an optimal prefix code algorith ...

  7. nginx配置虚拟域名

           /usr/lcoal/nginx/conf/nginx.conf 配置详解如下: worker_processes   1;                                ...

  8. Xshell6连接Ubuntu18.04

    1.首先在自己windows10电脑上安装了xshell6,安装过程不叙述了 2.打开xshell 3.执行新建命令.打开Xshell软件后找到左上角第一个“文件”菜单并单击,弹出来一个下拉框,点击选 ...

  9. Unity ContextMenu特性

    有时候我们需要在编辑器下,频繁的做一些操作,比如说在不同的位置创建物体,一个个的修改坐标显然有点繁琐 这时候ContextMenu就派上用处了 例:利用 LineRenderer 画圆,我们不可能一个 ...

  10. CSU 1249 竞争性酶抑制剂和同工酶

    1249: 竞争性酶抑制剂和同工酶 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 109  Solved: 49 Description 人体内很多化学 ...