此文是关于Numpy的一些基本用法, 内容来源于Numpy官网:https://docs.scipy.org/doc/numpy-dev/user/quickstart.html

1.The Basics

1)导入numpy

import numpy as np

2)创建一个0--14的数组a, 并将其变为3行5列的二位数组

a = np.arange(15).reshape(3, 5)
a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])

3)查看a的形状

a.shape
(3, 5)

4)查看a的维数

a.ndim
2

5)查看a中元素的数据类型

a.dtype
dtype('int64')

6)查看数组中每个元素的字节大小

a.itemsize
8

7)查看数组a中所有元素的总个数

a.size
15

8)查看a的类型, 结果显示a是一个numpy数组

type(a)
numpy.ndarray

2.Array Creation

1)可以把一个python列表直接转为numpy数组

a = np.array([2,3,4])
a
array([2, 3, 4])

一个常见的错误是不能直接把元素放入函数小括号内, 需要单独的一个中括号包含着这些元素。

a = np.array(1,2,3,4)    # WRONG
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-15-90a21e8c09d8> in <module>()
----> 1 a = np.array(1,2,3,4) # WRONG ValueError: only 2 non-keyword arguments accepted a = np.array([1,2,3,4]) # RIGHT
a
array([1, 2, 3, 4])

2)创建元素为0的数组

np.zeros( (3,4) )
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])

3)创建元素为1的数组

np.ones( (2,3,4), dtype=np.int16 )
array([[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]], [[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]], dtype=int16)

4)创建一个空数组

np.empty( (2,3) )
array([[ 0., 0., 0.],
[ 0., 0., 0.]])

5)设定区间, 并按照一定间隔创建数组

np.arange( 10, 30, 5 )
array([10, 15, 20, 25]) np.arange( 0, 2, 0.3 )
array([ 0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])

6)在0到2之间均匀的生成9个数作为数组

from numpy import pi
np.linspace( 0, 2, 9 )
array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])

3.Basic Operations

1)两个数组的元素相加减

a = np.array( [20,30,40,50] )
b = np.arange( 4 )
b
array([0, 1, 2, 3]) c = a-b
c
array([20, 29, 38, 47])

2)数组的2次幂

b**2
array([0, 1, 4, 9]) 10*np.sin(a)
array([ 9.12945251, -9.88031624, 7.4511316 , -2.62374854])

3)对数组内元素与一常量比较大小, 返回一个布尔数组

a<35
array([ True, True, False, False], dtype=bool)

4)两个数组的元素间相乘

A = np.array( [[1,1],[0,1]] )
B = np.array( [[2,0],[3,4]] )
A*B
array([[2, 0],
[0, 4]])

5)两个数组矩阵点乘, 有两种方法, 得到的结果是相同的。

A.dot(B)
array([[5, 4],
[3, 4]]) np.dot(A, B)
array([[5, 4],
[3, 4]])

6)数组的求和、最大值、最小值

a = np.random.random((2,3))
a
array([[ 0.76423426, 0.45623695, 0.65700409],
[ 0.75365929, 0.13244614, 0.23917196]]) a.sum(), a.max(), a.min()
(3.0027526935349194, 0.76423426042527243, 0.13244614149075928)

4.Indexing, Slicing and Iterating

1)一维数组的索引与切片

a = np.arange(10)**3
a
array([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729]) # a的第三个元素
a[2]
8 # a的第三到第五个元素
a[2:5]
array([ 8, 27, 64]) # a的从0到6个元素中, 索引能被2整除的都替换为-1000
a[:6:2] = -1000
a
array([-1000, 1, -1000, 27, -1000, 125, 216, 343, 512, 729])
# 将a反转
a[ : :-1]
array([ 729, 512, 343, 216, 125, -1000, 27, -1000, 1, -1000])

2)多维数组的索引与切片

def f(x,y):
return 10*x+y b = np.fromfunction(f,(5,4),dtype=int)
b
array([[ 0, 1, 2, 3],
[10, 11, 12, 13],
[20, 21, 22, 23],
[30, 31, 32, 33],
[40, 41, 42, 43]]) b[2,3]
23 b[0:5, 1]
array([ 1, 11, 21, 31, 41])
b[-1]
array([40, 41, 42, 43])
# 将数组展开
b.flatten()、
array([ 0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23, 30, 31, 32, 33, 40, 41, 42, 43])

3)数组拼接

a = np.floor(10*np.random.random((2,2)))
b = np.floor(10*np.random.random((2,2)))
a
array([[ 4., 7.],
[ 9., 2.]]) b
array([[ 8., 1.],
[ 9., 5.]]) # 竖向拼接
np.vstack((a,b))
array([[ 4., 7.],
[ 9., 2.],
[ 8., 1.],
[ 9., 5.]]) # 横向拼接
np.hstack((a,b))
array([[ 4., 7., 8., 1.],
[ 9., 2., 9., 5.]])
# 横向拼接
np.column_stack((a,b))
array([[ 4., 7., 8., 1.],
[ 9., 2., 9., 5.]])

4) 将数组分成几个小数组

a = np.floor(10*np.random.random((2,12)))
a
array([[ 2., 3., 2., 4., 2., 1., 5., 4., 4., 2., 0., 3.],
[ 9., 2., 0., 2., 8., 3., 6., 2., 7., 2., 2., 6.]]) np.hsplit(a,3) # Split a into 3
[array([[ 2., 3., 2., 4.],
[ 9., 2., 0., 2.]]), array([[ 2., 1., 5., 4.],
[ 8., 3., 6., 2.]]), array([[ 4., 2., 0., 3.],
[ 7., 2., 2., 6.]])] np.hsplit(a,(3,4)) # Split a after the third and the fourth column
[array([[ 2., 3., 2.],
[ 9., 2., 0.]]), array([[ 4.],
[ 2.]]), array([[ 2., 1., 5., 4., 4., 2., 0., 3.],
[ 8., 3., 6., 2., 7., 2., 2., 6.]])]

Numpy Quickstart tutorial的更多相关文章

  1. Python 学习 第十一篇:numpy

    numpy是Python中的基础模块,类型ndarray定义了一个具有矢量算术运算的多维数组,无需编写循环,就能对整个数组进行批量运算.通常情况下,导入numpy,设置别名为np. import nu ...

  2. numpy 学习笔记

    numpy 学习笔记 导入 numpy 包 import numpy as np 声明 ndarray 的几种方法 方法一,从list中创建 l = [[1,2,3], [4,5,6], [7,8,9 ...

  3. [Python] 01 - Number

    故事背景 一.大纲 如下,chapter4 是个概览,之后才是具体讲解. 二. 编译过程 Ref: http://www.dsf.unica.it/~fiore/LearningPython.pdf

  4. [Python] 01 - Number and Matrix

    故事背景 一.大纲 如下,chapter4 是个概览,之后才是具体讲解. 二. 编译过程 Ref: http://www.dsf.unica.it/~fiore/LearningPython.pdf

  5. 小猪的Python学习之旅 —— 16.再尝Python数据分析:采集拉勾网数据分析Android就业行情...

    一句话概括本文: 爬取拉钩Android职位相关数据,利用numpy,pandas和matplotlib对招人公司 情况和招聘要求进行数据分析. 引言: 在写完上一篇<浅尝Python数据分析: ...

  6. numpy基本用法

    numpy 简介 numpy的存在使得python拥有强大的矩阵计算能力,不亚于matlab. 官方文档(https://docs.scipy.org/doc/numpy-dev/user/quick ...

  7. numpy快速指南

    Quickstart tutorial 引用https://docs.scipy.org/doc/numpy-dev/user/quickstart.html Prerequisites Before ...

  8. Mac 操作系统安装 SVN server教程(Subversion With Mac OS X Tutorial)

    Find recent articles on my github page: rubyrobot.github.io © 2006-2014 Imagine Ecommerce Subversion ...

  9. Python数据分析与可视化(经典学习资料)

    Numpy:来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多,本身是由C语言开发.这个是很基础的扩展,其余的扩展都是以此为基础.数据结构为 ...

随机推荐

  1. 【Linux】postfix大坑笔记

    由于需要,想弄一个自动发送邮件的mailx或者sendmail 但是执行 echo "test" | mail -s "Worning mail !" xxxx ...

  2. 【Oracle LISTNER】oracle Listener 宕机解决办法

    今天想起了很久没用的oracle库,用plsql尝试连接,发现报超时错误,以为是偶然,多次尝试连接,发现还是超时,于是登录到系统中,查看数据库情况,发现正常查询和修改添加,感觉不是数据库问题,查看监听 ...

  3. SDUST数据结构 - chap1 绪论

    一.判断题: 二.选择题:                          

  4. pandas DataFrame的新增行列,修改、删除、筛选、判断元素以及转置操作

    1)指定行索引和列索引标签 index 属性可以指定 DataFrame 结构中的索引数组,  columns 属性可以指定包含列名称的行, 而使用 name 属性,通过对一个 DataFrame 实 ...

  5. 無法直接連接互聯網,需要使用代理時(Scrapy)

    在windows系統中,如果無法直接連接互聯網,需要使用代理時該怎麽做呢? 1. 在powershell中設置proxy 背景:使用公司電腦,無法直接訪問互聯網,想要訪問互聯網就得使用代理,但是在控制 ...

  6. Eureka详解系列(二)--如何使用Eureka(原生API,无Spring)

    简介 通过上一篇博客 Eureka详解系列(一)--先谈谈负载均衡器 ,我们知道了 Eureka 是什么以及为什么要使用它,今天,我们开始研究如何使用 Eureka. 在此之前,先说明一点.网上几乎所 ...

  7. 我教你如何解决 Docker 下载 mcr.microsoft.com 镜像慢的办法

    我教你如何解决 Docker 下载 mcr.microsoft.com 镜像慢的办法 一.介绍 最近,我在写有关使用 Jenkins 搭建企业级持续集成环境的文章,准备了四台服务器,企业级别嘛,一台就 ...

  8. scrapy-redis非多网址采集的使用

    问题描述 默认RedisSpider在启动时,首先会读取redis中的spidername:start_urls,如果有值则根据url构建request对象. 现在的要求是,根据特定关键词采集. 例如 ...

  9. .Net 5 C# 泛型(Generics)

    这里有个目录 什么是泛型? 后记 什么是泛型? 我们试试实现这个需求,给一个对象,然后返回 另一个同样的对象,先不管这个实用性,我们实现看看 首先是int型 private int Get(int a ...

  10. LOJ10019生日蛋糕

    Mr.W 要制作一个体积为 N*π 的 M 层生日蛋糕,每层都是一个圆柱体. 设从下往上数第 i 蛋糕是半径为 R_i,高度为 H_i 的圆柱.当 i<M 时,要求 R_i>R_{i+1} ...