Python Numpy 简介

2018-10-09 Tuesday     program , linux

NumPy 是 Python 的一个扩充程序库,支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。内部解除了 Python 的 PIL (全局解释器锁),同时使用 C/C++ 做扩展,运算效率极好,是大量机器学习框架的基础库。

NDArray

这是一个多维数组对象,该对象由 实际数据元数据 组成,其中大部分操作仅仅修改元数据部分,而不改变底层的实际数据。

注意,实际的数据必须要保证是同质的。

import numpy as np

#----- 一维 通过Python队列初始化
np.array([0, 1, 2, 3, 4])
#----- 一维 使用arange()函数
np.arange(5)
np.arange(0, 5)

#----- 多维 通过shape属性查看维度
arr = np.array([[0, 1, 2], [3, 4, 5]])
arr = np.array([np.arange(0, 3), np.arange(3, 6)])
arr.shape

#----- 修改维度
arr.shape = 3, 2
arr = arr.reshape(3, 2)

#----- 数组展开,前者只是展示格式不同,而后者会申请内存
arr.ravel()
arr.flatten()

#----- 转置矩阵
arr = np.arange(6).reshape(2, 3)
arr.transpose()

#----- 其它
arr = np.arange(6).reshape(2, 3)
arr.dtype     # 类型
arr.shape     # 维度(行, 列)
arr.ndim      # 行
arr.size      # 总大小,也就是 行*列
arr.itemsize  # 单个元素的大小
arr.data      # 真正的数据信息,包括地址、元素个数等

随机数

这一模块用于生成随机数,包含了一系列的函数。

rand()

numpy.random.rand(d0, d1, ..., dn)

生成范围是 [0, 1) 的数据,数据是均匀分布,其中 dN 代表了维度,例如 rand(4, 2) 生成 4 行 2 列的数据。

randn()

numpy.random.randn(d0, d1, ..., dn)

rand() 函数类似,只是生成的为正态分布。

uniform()

numpy.random.uniform(low=0.0, high=1.0, size=None)

用于生成均匀分布 (uniform distribution) 的随机数,其中 size 可以是数值或者元组。

RandomState

其入参可以是 int array None ,与 seed() 函数类似,其中 RandomState() 是线程安全的,相比来说更为复杂,可以替换 rand() 函数。

使用 RandomState() 获得随机数生成器时,只要种子相同那么最终生成的序列也就是相同的,一般的使用方法如下:

import numpy as np

for i in xrange(4):
    rnd = np.random.RandomState(1)
    print rnd.uniform(0, 1, (2, 3))

正态随机值

numpy.random.normal(loc=0.0, scale=1.0, size=None)

生成一个符合正态分布的随机序列,详细可以参考 docs.scipy.org 中的介绍。

import numpy
import matplotlib.pyplot as plt

mean = 0
sigma = 1
arr = numpy.random.normal(mean, sigma, size=1000)
abs(mean - np.mean(s)) < 0.01
abs(sigma - np.std(s, ddof = 1)) < 0.01

plt.plot(arr)
plt.show()

常用技巧



如果喜欢这里的文章,而且又不差钱的话,欢迎打赏个早餐 ^_^


About This Blog

Recent Posts

Categories

Related Links

  • RTEMS
    RTEMS
  • GNU
  • Linux Kernel
  • Arduino

Search


This Site was built by Jin Yang, generated with Jekyll, and hosted on GitHub Pages
©2013-2019 – Jin Yang