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

时间: 2024-11-05 20:46:12

NumPy基础入门学习的相关文章

鱼C《零基础入门学习Python》10-17节课时知识点总结

第10讲:列表:一个打了激素的数组 1. 列表都可以存放一些什么东西?  我们说 Python 的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么 Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型. 2. 向列表增加元素有哪些方法?  三种方法想列表增加元素,分别是:append().extend() 和 insert().    3. append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?  append() 方法是将

Linux基础入门---学习心得

接近一周的Linux基础入门学习,使我对Linux有了较为全面和整体的认识,通过本周的学习我把Linux与Windows进行比较发现相对于Windows,Linux有许多特别的区别去Windows的地方,并且对Linux中的指令操作也有了一定的了解,学会了一些基本的指令操作. Linux的一大特点是多用户,在Linux中可以创建多个用户每一个用户的权限是不同的,所有用户的存储都一起储存在同一个物理硬盘中但是用户与用户之间的存储信息又被虚拟隔离了,即每个用户对自己的资源(例如:文件.设备)有特定的

鱼C《零基础入门学习Python》1—9节课时知识点总结

第一节:我和python的第一次亲密接触 0. Python 是什么类型的语言? 答:脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方式快速完成某些复杂的事情通常是创造脚本语言的重要原则,基于这项原则,使得脚本语言通常比 C语言.C++语言 或 Java 之类的系统编程语言要简单容易.也让脚本语言另有一些属于脚本语言的特性: 语法和结构通常比较简单 学习和使用通常比较简单 通常以容易修改程序的“解释”作为运行方式,而不需要

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

大牛整理最全Python零基础入门学习资料 0 发布时间:『 2017-11-12 11:56 』     帖子类别:『人工智能』  阅读次数:3504 (本文『大牛整理最全Python零基础入门学习资料』的责任编辑:老王) 摘要:大牛整理最全Python零基础入门学习资料 Python数据类型--数字 Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. var1 = 1 var2 = 10 您也可以使

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

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

零基础入门学习java,应该如何快速打好Java基础?

零基础入门学习java,应该如何快速打好Java基础?从大学到现在,我使用Java已经将近20年,日常也带实习生,还在公司内部做training,所以可以分享下我的经验,希望对你有用. 创一个小群,供大家学习交流聊天如果有对学java方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学java能够持之以恒java爱好群,如果你想要学好java最好加入一个组织,这样大家学习的话就比较方便,还能够共同交流和分享资料,给你推荐一个学习的组织:快乐学习java组织

Linux基础入门学习笔记20135227黄晓妍

学习计时:共24小时 读书:1小时 代码:8小时 作业:3小时 博客:12小时 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用Linux中用户管理命令/系统相关命令/文件目录相关命令/打包压缩相关命令/比较合并相关命令/网络相关命令等 4. 熟练应用“搜索”进行举一反三的学习 二.学习资源 1. 课程资料:https://www.shiyanlou.com/courses/413   实验一,课程邀请码:W7FQKW4Y 2. Li

Python3零基础入门学习视频+源码+课件+习题-小甲鱼

目录 1. 介绍 2. 目录 3. 下载地址 1. 介绍 适用人群 完全零基础入门,不需要任何前置知识. 课程概述 本系列教程面向零基础的同学,是一个深入浅出,通俗易懂的Python3视频教程. 前半部分主要讲解Python3的语法特性,后半部分着重讲解Python3在爬虫.Tkinter.Pygame游戏开发等实例上的应用.整个系列共16个章节,前边13个章节从一个小游戏引入Python,逐步介绍Python的语法以及语言特色.最后3个章节为案例的演示,是前边内容的总结和提高. 其他介绍 2.

numpy简单入门学习

为了快速的学习numpy,只要参阅了官网的快速入门教程进行学习,官网的网址:https://docs.scipy.org/doc/numpy-dev/user/quickstart.html.虽然和matlab的操作大同小异,但是还是需要很多明确的python的概念,比如序列,列表以及元组的概念,当然这也是python里面需要注意最多的基本的数据类型.现将学习的基本过程叙述如下: numpy是通过python语言实现的用于科学研究中的计算.可以方便的进行代数计算.傅里叶计算等.这是Numpy学习