1. 初识数组

import numpy as np
a = np.arange(15)
a = a.reshape(3, 5)
print(a.ndim, a.shape, a.dtype, a.size, a.itemsize)
# 2 (3, 5) int64 15 8
  • ndim,数组的维度数,二维数组就是 2
  • shape,数组在各个维度上的长度,用元组表示
  • dtype,数组中元素的数据类型,比如 int32, float64 等
  • size,数组中所有元素的总数
  • itemsize,数组中每个元素所占的字节数

2. 创建数组

a = np.array([[1, 2, 3], [4, 5, 6]])
a = np.ones((3, 4))
a = np.zeros((3, 4), dtype=np.float32)
a = np.linspace(0, 2, 9) # 9 numbers from 0 to 2
  • np.linspace(start, stop, num=50) 产生一个区间在[start, stop],长度为 num 的一维数组

3. 基本运算

a = np.array([[1, 2, 3], [4, 5, 6]]) # (2, 3)
b = np.array([[1, 0, 1], [0, 1, 1], [1, 1, 0]]) # (3, 3)
c = np.dot(a, b) # 矩阵相乘
d = a @ b # 矩阵相乘
e = np.dot(a[0], [0]) # 向量内积
f = a * a # 元素相乘 g = np.sum(a)
h = np.mean(a, axis=0)
  • np.sum 等函数若不指定 axis,则把数组所有元素当成列表来处理,axis = 0,表示只在第一个维度上进行求和,以此类推。

4. 维度操作

a = np.zeros((2, 3))
b = np.zeros((3, 3))
np.vstack((a, b)).shape # (5, 3)
  • np.vstack, 沿着垂直方向或者行的方向将数组堆起来
a = np.zeros((2, 1, 5))
b = np.zeros((2, 2, 5))
np.hstack((a, b)).shape # (2, 3, 5)
  • np.hstack, 沿着水平方向或者列的方向将数组堆起来
a = np.zeros((2, 5, 1))
b = np.zeros((2, 5, 5))
np.concatenate((a, b), axis=2).shape # (2, 5, 6)
  • np.concatenate, 沿着某一维度将数组堆起来
a = np.zeros((3, ))
b = np.zeros((3, ))
np.stack((a, b), axis=0).shape # (2, 3)
np.stack((a, b), axis=1).shape # (3, 2)
  • np.stack, 将数组沿着新的维度堆起来

5. 随机数

a = np.random.rand(3, 2) # (3, 2)
  • np.random.rand, 返回一个 [0, 1) 之间的随机分布
a = np.random.random((2, 3)) # (2, 3)
  • np.random.random, 返回一个 [0, 1) 之间的随机分布
a = np.random.randn(3, 2) # (3, 2)
a = sigma * np.random.randn(...) + mu
  • np.random.randn, 返回一个均值为 0 方差为 1 的标准正态分布,通过 mu 和 sigma 可以任意改变均值和方差
a = np.random.randint(1, 5, (3, 2)) # (3, 2)
  • np.random.randint(low, high=None, size=None), 返回一个 [0, low) 或者 [low, high) 之间的随机整数
np.random.choice(np.arange(5, 10), 3, replace=False)
np.random.choice(5, (3,2))
  • np.random.choice(a, size=None, replace=True, p=None), 返回 a 中元素或者 np.arange(a) 范围内的随机整数,replace=True 默认可以有重复元素
np.random.seed(1)
a = np.random.rand(3, 2)
np.random.seed(1)
b = np.random.rand(3, 2) # a == b a = np.array([1, 2, 3, 4, 5])
np.random.shuffle(a)
  • np.random.seed 通过设置随机数种子的值可以保证两次产生的随机数相同
  • np.random.shuffle() 沿着第一维随机打乱数组

获取更多精彩,请关注「seniusen」!

Python 学习笔记之 Numpy 库——数组基础的更多相关文章

  1. Python 学习笔记之 Numpy 库——文件操作

    1. 读写 txt 文件 a = list(range(0, 100)) a = np.array(a) # a.dtype = np.int64 np.savetxt("filename. ...

  2. Python学习笔记3-Python元组、数组、字典集合的操作

    在Python中数组中的每一项可以是不同的数据类型 元组:只能读不能写的数组 aTuple=(1,'abc','tmc',79.0,False) print aTuple[1:3] print typ ...

  3. python学习笔记——多进程间通信——Linux信号基础

    1 信号的基本描述 Signal信号(其全程为软中断信号)是Linux系统编程中非常重要的概念,信号是异步进程中通信的一种方式. 作用是通知进程发生了异步事件.进程之间可以调用系统来传递信号, 本身内 ...

  4. python学习笔记-Day2 Numpy数组

    1. 实现两个数组相加,在数据量特别大的时候 产生数组: (1)  从列表产生数组:a=[0,1,2,3] a=np.array(1) a (2)  从列表传入 a=np.array([1,2,3,4 ...

  5. 吴裕雄--天生自然Numpy库学习笔记:NumPy 迭代数组

    import numpy as np a = np.arange(6).reshape(2,3) print ('原始数组是:') print (a) print ('\n') print ('迭代输 ...

  6. 吴裕雄--天生自然Numpy库学习笔记:NumPy 创建数组

    import numpy as np x = np.empty([3,2], dtype = int) print (x) import numpy as np # 默认为浮点数 x = np.zer ...

  7. Python 学习笔记之—— PIL 库

    PIL,全称 Python Imaging Library,是 Python 平台一个功能非常强大而且简单易用的图像处理库.但是,由于 PIL 仅支持到Python 2.7,加上年久失修,于是一群志愿 ...

  8. Python学习笔记(1)——数组差集

    面试的时候被问到这样一个问题:有A.B两个数组,找出B中有A中没有的所有元素(换言之即是求差集B-A).当时比较紧张,用了最原始的双重嵌套循环逐个比较,很显然这种时间复杂度高达O(n2)的算法相当lo ...

  9. 【Python学习笔记】Pandas库之DataFrame

    1 简介 DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表. 或许说它可能有点像matlab的矩阵,但是matlab的矩阵只能放数值型值(当然matla ...

随机推荐

  1. JQuery 禁用后退按钮

    jQuery(document).ready(function () { if (window.history && window.history.pushState) { $(win ...

  2. C#结构体和字节数组的转换函数

    在通信过程中,一般我们都会操作到字节数组.特别是希望在不同语言编程进行操作的时候. 虽然C#提供了序列化的支持,不用字节数组也行.但操作字节数组肯定会碰到.   一般都会采用结构来表示字节数组.但结构 ...

  3. mysql慢查询开启及分析方法

    最近服务维护的公司的DB服务器,总是会出现问题,感觉需要优化一下了,登陆上去,发现慢查询日志都没有开,真是惭愧, 故果断加上慢查询日志, 经过分析sql记录,发现问题很多,开发人员很多没有对sql优化 ...

  4. Java基础随笔2

    各类运算符: 算数运算符::+,-,*,/,%,++,-- ++:自增 --:自减 单独使用的时候,++或者--无论是放在变量的前面还是后面,结果是一样的. 参与操作的时候: 如果++或者--在变量的 ...

  5. python核心编程2 第十一章 练习

    11-2 函数.结合你对练习5-2的解,以便你创建一个带一对相同数字并同时返回它们之和以及产物的结合函数. multiply = lambda x, y: x * y if __name__ == ' ...

  6. 【mysql学习-1】

    part-1: #use mysql;/*show tables;select * from user;use mysql;show databases;#create database db1; # ...

  7. 【c学习-9】

    /*内存练习*/ #include #include//引入内存分配库文件 int main(){ double* x; //定义整型指针和double指针 int* y; x=(double*)ma ...

  8. 阅读《大型网站技术架构》,并结合"重大需求征集系统"有感

    今天阅读了<大型网站技术架构:核心原理与案例分析>的第五.六.七章.这三张主要是讲述了一个系统的可用性.伸缩性和可扩展性.而根据文中所讲述的,一个系统的可用性主要是体现在这个系统的系统服务 ...

  9. NAND Flash结构及驱动函数

    目标:以NAND Flash K9F2G08U0M为例介绍其结构及其驱动程序的书写 1. 结构 由芯片手册中的图可知:K9F2G08U0M大小为2112Mbits(即 256MB = 2Gb ) 共有 ...

  10. go学习笔记-流程控制(if/else,for/range)

    流程控制(if/else,for/range) if if条件判断语句的语法概括起来就是:如果满足条件就做某事,否则做另一件事. func testIf() { num := 10 if num &l ...