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. Windows下安装PCL点云库

    原文链接:http://blog.csdn.net/u012337034/article/details/38270109 简介:         在Windows下安装PCL点云库的方法大概有两种: ...

  2. python 解决粘包问题

    客户端发送hello,如果服务端 recv(1) ,那只能接收到 h 这一个字符,然后再recv(1) 一下,可以再接收一个 e , 因为客户端发送的结果长,所以只能把其他的先缓存下来,下次recv的 ...

  3. TDD:代码可测试设计

    1  方法内部代码命令,查询分离. a . 命令方法:执行一系列动作. b.  查询方法: 执行查询动作,并返回值. 2  一个类中有好几个地方都用到了一个或多个全局变量,可以考虑把全局变量封装到另外 ...

  4. cornerstone提示“SQLite-database disk image is malformed”

    当点击workingCopy时错误如下 google了一下,有是有解决的办法,可是这些都是直接使用sqlite时产生的问题. sqlite错误 The database disk image is m ...

  5. webpack中使用vue

    1.安装vue cnpm i install -S 2.由于在 webpack 中,推荐使用 .vue 的文件模板文件定义组件 , 所以 ,需要安装 能解析这种文件的 loader cnpm i vu ...

  6. 20181009noip HZ EZ 两校联考trade(优先队列,贪心)

    题面戳这里 思路: 裸的,贪心... 考场上写了一个数据分治(70ptsDP,30pts线段树优化贪心,GG了后30分) 这道题其实很简单的 我们看图: 我们在A时刻买一个东西,在B时刻卖出去,我们可 ...

  7. 【TOJ 1449】Area of Circles II(求不同位置的两圆面积之和)

    描述 There are two circles on the plane. Now you must to calculate the area which they cover the plane ...

  8. 最长递增子序列(51Nod - 1134)

    20180604 23:18 https://blog.csdn.net/joylnwang/article/details/6766317(写得很用心,膜拜dalao) 给出长度为N的数组,找出这个 ...

  9. Tornado学习

    为什么用Tornado? 异步编程原理 服务器同时要对许多客户端提供服务,他的性能至关重要.而服务器端的处理流程,只要遇到了I/O操作,往往需要长时间的等待.   屏幕快照 2018-10-31 上午 ...

  10. PHP学习day1

    PHP 变量规则: 变量以 $ 符号开头,其后是变量的名称 变量名称必须以字母或下划线开头 变量名称不能以数字开头 变量名称只能包含字母数字字符和下划线(A-z.0-9 以及 _) 变量名称对大小写敏 ...