此文是关于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. 在项目中应该使用Boolean还是使用boolean?

    起因 在公司看代码时,看到了使用Boolean对象来完成业务逻辑判断的操作.和我的习惯不一致,于是引起了一些反思. boolean和Boolean的差别咱就不说了,我们仅探讨使用boolean与Boo ...

  2. K8s 平台可以如何处理 Pod 预授权问题

    前言 TKEx-CSIG 是基于腾讯公有云 TKE 和 EKS 容器服务开发的内部上云容器服务平台,为解决公司内部容器上云提供云原生平台,以兼容云原生.适配自研业务.开源协同为最大特点. 业务容器上云 ...

  3. ABAP program lines are wider than the internal table

    错误详细描述: An exception occurred that is explained in detail below.The exception, which is assigned to ...

  4. Entity与Entity之间的相互转化

    一.两个实体类的属性名称对应之间的转化 1.两个实体类 public class Entity1 { private Integer id; private String name; private ...

  5. Ansible自动化运维工具的使用

                                 Ansible自动化运维工具的使用       host lnventory 管理主机 ip  root账号密码 ssh端口 core mod ...

  6. sql 括号

    <select id="chlTransQueryByChlType" parameterType="map" resultType="java ...

  7. Language Guide (proto3) | proto3 语言指南(十四)选项

    Options - 选项 .proto文件中的单个声明可以使用许多 选项 进行注释.选项不会更改声明的总体含义,但可能会影响在特定上下文中处理声明的方式.可用选项的完整列表在google/protob ...

  8. (十六)配置多数据源,整合MybatisPlus增强插件

    配置多数据源,整合MybatisPlus增强插件 多数据简介 MybatisPlus简介 1.案例实现 1.1 项目结构 1.2 多数据源配置 1.3 参数扫描类 1.4 配置Druid连接池 1.5 ...

  9. Prometheus自定义监控内容

    Prometheus自定义监控内容 一.io.micrometer的使用 1.1 Counter 1.2 Gauge 1.3 Timer 1.4 Summary 二.扩展 相关内容原文地址: 博客园: ...

  10. Docker容器启动Mysql,Docker实现Mysql主从,读写分离

    Docker容器启动Mysql,Docker实现Mysql主从,读写分离 一.Docker文件编排 二.配置主从复制 2.1 配置master 2.2 配置slave 三.验证主从复制 3.1 mas ...