) # [ 0 -1 -3 -1 -4 0 -1] # ufunc 的 at 方法可以对数组元素部分调用 np.sign.at(a, [2, 4]) print(a) # np.sign.at...np.random.random_integers(0, 7, 9) print(a) # [3 2 7 7 4 2 1 4 3] # partition 仅仅排序所选位置 # 也就是说 a 中下标为 4 的元素在排序后的位置...# 其它的不保证 print(np.partition(a, 4)) # [2 3 1 2 3 7 7 4 4] np.random.seed(46) a = np.random.randn(30...datetime64 类型 import numpy as np # 由年月日构造 print(np.datetime64('2015-05-21')) # numpy.datetime64('2015...print(local - with_offset) # numpy.timedelta64(-480,'m')
卷积 在深度学习里CNN卷积神经网络是最常见的概念,可以算AI届的hello world了。...其实很早的图像处理里,使用一个滤波器扫一遍图像就类似现在深度学习里卷积的计算过程,只是AI中核是需要通过学习得到的。...本文就不从理论上详细介绍卷积了,程序员就要有程序员的亚子,所以我直接上代码介绍怎么用numpy实现卷积。...numpy实现卷积 基础定义 以CV中对图像卷积为例,图像卷积一般都是 输入:四维数组[B,H,W,C_in] 卷积核:四维数组[C_in,K,K,C_out] 输出:四维数组[B,H2,W2,C_out...下面我们进行扩展,用多个核卷积多个通道维度的数据。
一、卷积神经网络 卷积神经网络是一种常用的深度学习模型,通常用作图像处理方面的任务,如人脸识别、目标识别等。 本文整理了卷积操作、特征图、卷积核的可训练参数等。 二、动画演示 ?...channel_out表示进行卷积运算新生成“图像”的通道数。 3.1卷积的意义 3.1.1 二维滤波 卷积的作用是二维滤波,起到特征提取的作用。...3.1.2 特征图 卷积输出的结果,可以直接作为下一层卷积的输入,因此卷积生成结果被叫做“特征图”。...3.1.3 平移不变性 3.1.4 感受野 3.2 numpy实现动画中的卷积 本文用了动画实现卷积的方式,用了矩阵哈达玛积,结果求和,再遍历通道。...特别希望对卷积不理解的同学,也尝试编写实验代码,一定会对卷积的含义有更深理解。
# 来源:NumPy Essentials ch2 数组索引和切片 # 创建 100x100 个 0~1 随机数 x = np.random.random((100, 100)) # 取第 42...行 87 列的元素(从零开始) y = x[42, 87] # 取第 k 行的所有元素 # 等价于 x[k] 和 x[k, ...] print(x[k, :]) a = np.array([[...Python 列表创建 NumPy 数组 x = np.array([1, 2, 3]) y = np.array(['hello', 'world']) # 但有时我们想创建范围内的数值数组 x...= range(5) y = np.array(x) # NumPy 有个辅助函数 # 等价于上面的操作 x = np.arange(5) # 多维数组也是一样的 x = np.array([...doc/numpy/user/basics.types.html
# 来源:NumPy Essentials ch3 向量化 import numpy as np # NumPy 数组的运算是向量化的 # 数组和标量运算是每个元素和标量运算 x = np.array...) # NumPy 使用 C 语言编译出来的代码来处理数据 # 所以很快 x = np.arange(10000) ''' %timeit x + 1 100000 loops, best of 3...numpy.chararray.resize Change shape and size of array in-place....numpy.oldnumeric.ma.resize The original array's total size can be any size....numpy.resize Return a new array with the specified shape. ''' # 每个函数或方法的文档字符串中 # 都包含它的 API 文档
利用 Python 原生的功能,创建一个二维的 list,变量名称为 x ,其 shape 为 (3,1) In [3]: x = [[3],[1],[4]]In [15]: xOut[15]: [[3...接下来,分别比较它们各自的对应元素,如果 x[i][j] 的二维 list....如果使用 Numpy 中的函数,可能只需要 1 行, In [33]: np.where(np.array(x)的,并最终传播为某种 shape....之所以,从文章开头到后面大部分篇幅,都在使用 Python 原生的功能实现与 Numpy 同样的效果,就是为了更好的说明 Numpy 的传播机制。 通过对比,或许更容易明白 Numpy 的传播机制。
# 来源:NumPy Essentials ch5 矩阵 import numpy as np ndArray = np.arange(9).reshape(3,3) # matrix 可以从...7, 8]]) ''' y ''' matrix([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]]) ''' # 矩阵的相加是逐元素的...是 min(m,n) 阶奇异值的对角阵,奇异值是 A A^T 和 A^T A 的特征值平方根 # v 是 min(m,n)xn 矩阵,列向量为右奇异向量,也就是 A^T A 的特征向量 np.set_printoptions...# 这里的常数项 C 一律为 0 integral = np.polyint(coef) integral # array([ 0.2 , -2.5 , 11.6667, -25...], dtype=bool) # 还可以直接算五阶导数 np.polyder(coef, 5) # array([], dtype=int32) # 构造 Polynomial 对象 from numpy.polynomial
# 来源:NumPy Essentials ch4 步长 # 步长是每个维度相邻两个元素的偏移差值 import numpy as np x = np.arange(8, dtype = np.int8...\x07' # 转换为 1x4x2 的三位数组 x.shape = 1,4,2 # 第三维的步长是 1,等于类型大小 # 第二维的步长是 2,等于第三维步长乘以第三维的长度 # 第一维的步长是 8,...y 是不连续的 x = np.ones((10000,)) y = np.ones((10000 * 100, ))[::100] # 它们的形状一样,都是 10000 大小的一维数组 x.shape...所以行和列都不连续 并且没有自己的数据 ''' # 它们的步长是不一样的 # 某个维度在切片时提供了步长 # 数组的步长也会乘这个数 x.strides, y.strides # ((8,), (800...(记录) x[0] # (1, 0.5, 'NumPy') # 还可以通过字段名称访问 # 得到的是字段值的数组 x['f2'] # array(['NumPy', 'Essential'], dtype
斐波那契数的第 n 项 # 来源:NumPy Cookbook 2e Ch3.1 import numpy as np # 斐波那契数列的每个新项都由之前的两项相加而成 # 以 1 和 2 开始...import numpy as np # 13195 的质因数是 5, 7, 13 和 29 # 600851475143 的最大质因数是多少呢?...) break 稳态向量 # 来源:NumPy Cookbook 2e Ch3.4 # 稳态向量:状态转移矩阵中 # 特征值 1 对应的向量,满足 Ax = x from _...收益的分布 # 来源:NumPy Cookbook 2e Ch3.6 from __future__ import print_function from matplotlib.finance import...埃拉托色尼筛选法 # 来源:NumPy Cookbook 2e Ch3.8 # 埃拉托色尼筛选法是筛选质数的算法 # 它迭代地判断倍数来寻找质数 # 根据定义,倍数不是质数,可以忽略 from __future
# 来源:NumPy Essentials ch6 绘图函数 import matplotlib.pyplot as plt import numpy as np def show(ori_func...# 将其与频率为 20 和 60 的波叠加起来 x2 = np.sin(2 * np.pi * 20 * time) x3 = np.sin(2 * np.pi * 60 * time) x +=...# 生成方波,振幅是 1,频率为 10Hz # 我们的间隔是 0.05s,每秒有 200 个点 # 所以需要每隔 20 个点设为 1 x = np.zeros(len(time)) x[::20] =...# 创建 10 个 0~9 随机整数的信号 a = np.random.randint(10, size = 10) a # array([7, 4, 9, 9, 6, 9, 2, 6, 8, 3]...A[0] / 10 # (6.2999999999999998+0j) A[int(10 / 2)] # (1-2.4424906541753444e-15j) # A[0] 是 0 频率的项
# 来源:NumPy Cookbook 2e Ch5 将图像加载进内存 import numpy as np import matplotlib.pyplot as plt # 首先生成一个...组合图像 import numpy as np import matplotlib.pyplot as plt from scipy.misc import lena ITERATIONS = 10...使图像变模糊 import numpy as np import matplotlib.pyplot as plt from random import choice import scipy...重复声音片段 import scipy.io.wavfile import matplotlib.pyplot as plt import urllib2 import numpy as np...import scipy.io.wavfile import numpy as np import matplotlib.pyplot as plt RATE = 44100 DTYPE =
# 来源:NumPy Cookbook 2e Ch4 使用缓冲区协议 # 协议在 Python 中相当于接口 # 是一种约束 import numpy as np import Image #...from PIL import Image (Python 3) import scipy.misc lena = scipy.misc.lena() # Lena 是 512x512 的灰度图像...data 的不透明度设置为 Lena 的灰度 data[:,:,3] = lena.copy() # 将 data 转成 RGBA 的图像格式,并保存 img = Image.frombuffer(...数组协议 from __future__ import print_function import numpy as np import Image import scipy.misc # 获取上一节的第一个图像...= np.asarray(img) print("Shape", numpy_array.shape) print("Data type", numpy_array.dtype) ''' Shape
# 来源:NumPy Beginner's Guide 2e ch4 交易相关偶对 import numpy as np from matplotlib.pyplot import plot from...多项式拟合 import numpy as np import sys from matplotlib.pyplot import plot from matplotlib.pyplot import...# 7 print np.argmin(vals) # 24 # 绘制原始函数和拟合函数 plot(t, bhp - vale) plot(t, vals) show() 平衡成交量 import numpy...-3632200.] ''' 使用向量化来避免循环 # 向量化就是逐元素调用函数 import numpy as np import sys # 获取开盘价、最高价、最低价和收盘价 o, h,...import numpy as np import sys from matplotlib.pyplot import plot from matplotlib.pyplot import show
# 来源:NumPy Cookbook 2e ch6 创建通用函数 from __future__ import print_function import numpy as np # 我们需要定义对单个元素操作的函数..."Result", ufunc(np.arange(4))) # Result [0 2 4 6] 勾股数 from __future__ import print_function import numpy...# 并且拥有许多字符串专用的方法 # 虽然我们可以为字符串创建通用函数 # 但是直接使用这些方法更省事 import urllib2 import numpy as np import re...() print(carray) 创建屏蔽数组 from __future__ import print_function import numpy as np from scipy.misc import...__ import print_function import numpy as np from matplotlib.finance import quotes_historical_yahoo
花式索引 # 这个代码通过将数组对角线上的元素设为 0 ,来展示花式索引 # 花式索引就是使用数组作为索引来索引另一个数组 # 来源:NumPy Cookbook 2e Ch2.6 import scipy.misc...0 ~ height - 1 的数组 lena[range(height), range(width - 1, -1, -1)] = 0 # 画出带对角线的 Lena 图像 plt.imshow(lena...将位置列表用于索引 # 这个代码的目的就是把 Lena 图像弄花 # 来源:NumPy Cookbook 2e Ch2.7 import scipy.misc import matplotlib.pyplot...布尔索引 # 来源:NumPy Cookbook 2e Ch2.8 import scipy.misc import matplotlib.pyplot as plt import numpy as...分离数独的九宫格 # 来源:NumPy Cookbook 2e Ch2.9 import numpy as np # 数独是个 9x9 的二维数组 # 包含 9 个 3x3 的九宫格 sudoku
# 来源:NumPy Cookbook 2e Ch10 加载示例数据集 from __future__ import print_function from sklearn import datasets...用于加载不同的数据集 print filter(lambda s: s.startswith('load_'), dir(datasets)) ''' ['load_boston', 'load_breast_cancer...= np.sum(logreturns ** 2, axis=1) # np.dot(logreturns, logreturns.T) 的矩阵 # 每项是 logret[i] · logret[j]...(logreturns, logreturns.T) # 使用 AP 算法进行聚类 # AffinityPropagation 用于创建聚类器 # 向 fit 传入距离矩阵可以对其聚类 # 用于聚类的属性是每个向量到其它向量的距离...in Cluster 7 使用 statsmodels 执行正态性测试 from __future__ import print_function import datetime import numpy
# 来源:NumPy Biginner's Guide 2e ch6 矩阵的逆 import numpy as np A = np.mat("0 1 2;1 0 3;4 -3 8") print...,x 是 A 关于 λ 的特征向量 import numpy as np A = np.mat("3 -2;1 0") print "A\n", A ''' A [[ 3 -2] [ 1 0]]...调整频率 import numpy as np from matplotlib.pyplot import plot, show # 创建 30 个点的余弦波 x = np.linspace(0,...随机游走 import numpy as np from matplotlib.pyplot import plot, show # 创建大小为 10000 的余额数组 # 初始余额为 1000 cash...# 和上一段代码基本一样 import numpy as np import matplotlib.pyplot as plt N=10000 # 将这里改成 lognormal 来生成对数正态分布的随机数
# 来源:NumPy Biginner's Guide 2e ch7 字典排序 import numpy as np import datetime # 日期转成字符串 def datestr2num...as np a = np.arange(5) # searchsorted 的第一个参数 a 是有序数组 # 第二个参数 v 是插入值的数组 # 返回插入值在有序数组中的位置 indices =...和pmt是负的,求完之后取相反数即可。...计算净现值(NPV)、内部收益率(IRR) import numpy as np # 生成五个 100 以内的随机数作为现金流序列 # -100 为初始值 cashflows = np.random.randint...{1:datestr2num}, unpack=True) # 读入天数 N = int(sys.argv[1]) # 创建布莱克曼窗口 window = np.blackman(N) # 使用卷积函数来平滑收盘价
# 来源:NumPy Biginner's Guide 2e ch2 >>> from numpy import * 多维数组 # 创建多维数组 >>> m = array([arange(2), arange...'int0'] # char 属性获取字符代码 >>> t = dtype('Float64') >>> t.char 'd' # type 属性获取类型 >>> t.type numpy.float64...我们只能得到它的视图 >>> b.ndim 1 >>> b.T array([0, 1, 2, 3, 4]) # NumPy 中的复数用 j 表示 >>> b = array([1.j + 1, 2....]) # flat 属性获取 numpy.flatiter 对象,它是一个迭代器,用于遍历所有元素 >>> b = arange(4).reshape(2,2) >>> b array([[0, 1]..., [2, 3]]) >>> f = b.flat >>> f numpy.flatiter object at 0x103013e00> >>> for item in f: print
# 来源:NumPy Biginner's Guide 2e ch3 读写文件 import numpy as np # eye 用于创建单位矩阵 i2 = np.eye(2) print i2...当天最高价减前一天的收盘价的绝对值 # 3....前一天收盘价减当天最低价的绝对值 import numpy as np import sys # 读入最高价、最低价、收盘价 h, l, c = np.loadtxt('data.csv', delimiter...# 就是当天与前 (N - 1) 天的均值 # 其中 N 是窗口大小 import numpy as np import sys from matplotlib.pyplot import plot...注: np.convolve计算离散卷积,定义为: 离散卷积其实就是系数数组的多项式乘法。例如计算[1, 2, 0, 3]和[1, -2, 5]的卷积: ?