Python 学习笔记之 Numpy 库——数组基础
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 库——数组基础的更多相关文章
- Python 学习笔记之 Numpy 库——文件操作
1. 读写 txt 文件 a = list(range(0, 100)) a = np.array(a) # a.dtype = np.int64 np.savetxt("filename. ...
- Python学习笔记3-Python元组、数组、字典集合的操作
在Python中数组中的每一项可以是不同的数据类型 元组:只能读不能写的数组 aTuple=(1,'abc','tmc',79.0,False) print aTuple[1:3] print typ ...
- python学习笔记——多进程间通信——Linux信号基础
1 信号的基本描述 Signal信号(其全程为软中断信号)是Linux系统编程中非常重要的概念,信号是异步进程中通信的一种方式. 作用是通知进程发生了异步事件.进程之间可以调用系统来传递信号, 本身内 ...
- python学习笔记-Day2 Numpy数组
1. 实现两个数组相加,在数据量特别大的时候 产生数组: (1) 从列表产生数组:a=[0,1,2,3] a=np.array(1) a (2) 从列表传入 a=np.array([1,2,3,4 ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 迭代数组
import numpy as np a = np.arange(6).reshape(2,3) print ('原始数组是:') print (a) print ('\n') print ('迭代输 ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 创建数组
import numpy as np x = np.empty([3,2], dtype = int) print (x) import numpy as np # 默认为浮点数 x = np.zer ...
- Python 学习笔记之—— PIL 库
PIL,全称 Python Imaging Library,是 Python 平台一个功能非常强大而且简单易用的图像处理库.但是,由于 PIL 仅支持到Python 2.7,加上年久失修,于是一群志愿 ...
- Python学习笔记(1)——数组差集
面试的时候被问到这样一个问题:有A.B两个数组,找出B中有A中没有的所有元素(换言之即是求差集B-A).当时比较紧张,用了最原始的双重嵌套循环逐个比较,很显然这种时间复杂度高达O(n2)的算法相当lo ...
- 【Python学习笔记】Pandas库之DataFrame
1 简介 DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表. 或许说它可能有点像matlab的矩阵,但是matlab的矩阵只能放数值型值(当然matla ...
随机推荐
- C# Pascal 命名规则
在以前版本的Visual Studio中,微软曾建议使用匈牙利命名法来写代码,并鼓励开发这位写出统一格式的代码而使用相同的法则.在最近发布的.NET和它的编程语言中,微软更换了他的这一法则.如果你用过 ...
- iOS:常用属性、方法
前言:一段时间没接触,很容易就忘记以前的知识.专写一篇,供几个月没接触,拿起却忘记了. 0.宏定义.系统相关 0-1).宏定义.规范 变量: //全局变量通常用小写g来提示 int gNumb=0; ...
- iOS | 实现拖拽CollectionViewCell排序
现在很多项目都会用到类似拖动的效果,比如今日头条和网易新闻之类的资讯类产品,都有用该技术设置模块顺序的操作. 在iOS9.0之后,苹果提供相关的方法,非常方便. 设定三个私有属性 @property( ...
- spring入门学习感悟
1:ioc:控制反转 控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是有外部容器负责创建和维护的(获取依赖对象的过程被反转了) 2:di:依赖注入,它是一种控制反转的一种实现方法,ioc容器 ...
- django-orm简记
首先orm是什么? orm-------->对象关系映射 专业性解释网上一大推,随便搜搜就能了解大概.在我理解(通俗):一个类 ----- 数据库中一张表 类属性 ----- 数据表中的字段名 ...
- Struts2进阶学习4
Struts2进阶学习4 自定义拦截器的使用 核心配置文件 <?xml version="1.0" encoding="UTF-8"?> <! ...
- tidb损坏tikv节点怎么恢复集群
tikv节点宕机(机器再起不来),或者数据节点被rm -rf 掉了怎么办 正常情况下tikv节点down掉了.此时不要去执行store delete store_id .数据一般可以正常访问,但是如 ...
- unbuntu16初始化设置,并解决虚拟机操作系统窗口不能自适应问题
版本说明: 虚拟机:VMware Workstation 12.5.2 操作系统:ubuntu 16.04 unbuntu不同版本的下载链接:http://old-releases.ubuntu.co ...
- node.js常用的fs文件系统
fs文件系统模块对于系统文件及目录进行一些读写操作. 模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync(). 异步的 ...
- 以源码安装的lamp环境为依托,源码安装zabbix监控系统
1.源码安装lamp环境 1)安装httpd, 以源码httpd-2.4.33为基础,解压后,执行./configure --prefix=/usr/local/ --sysconfdir=/etc/ ...