python输入两个数求积_2.Python numpy笔记(利用数组进行快速向量化运算)

1 matplotlib(工具包)

使用numpy进行数组运算,并调用其他Python库来实现硬件交互。其核心是一套由对象构成的绘图API。

在matplotlib.pyplot

模块中有一套完全仿照MATLAB的函数形式的绘图接口。

from numpy import *

from matplotlib.pyplot import *

1.1 scatter画散点图

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None,

vmin=None, vmax=None, alpha=None, linewidths=None, verts=None,

edgecolors=None, hold=None, data=None, **kwargs)

s:调节形状的大小,当s的长度和x一样时,表示x中的每一个点对应s中的一个点。

c:调节形状的颜色,可以是一个序列,

marker:形状

linewidth:线宽

2. random模块

2.1 Python中的random模块

random.random():用于生成一个0到1的随机浮点数,区间左闭右开

random.uniform(a,b):用于生成一个指定范围内的随机浮点数,两边都是闭区间

random.randint(a,b):用于生成一个指定范围内的整数,两边都是闭区间

random.randrange([start],stop[,step]):从指定范围内,按指定基数递增的集合中获取一个随机数。

random.choice(sequence):从序列中获取一个随机元素。

random.shuffle():将一个列表中的元素打乱。

random.sample(sequence,k):从指定序列中随机获取指定长度片段,不会修改原有序列。

2.2 numpy 中的random

numpy.random.seed()与numpy.random.RandomState(),两者实现的作用是一样的,都是使每次生成的随机数一样。

>>> import numpy as np

>>> np.random.seed(10)

>>> np.random.rand(8)

array([0.77132064, 0.02075195, 0.63364823, 0.74880388, 0.49850701,

0.22479665, 0.19806286, 0.76053071])

>>> np.random.seed(10)

>>> np.random.rand(8)

array([0.77132064, 0.02075195, 0.63364823, 0.74880388, 0.49850701,

0.22479665, 0.19806286, 0.76053071])

numpy.random.rand(d0, d1, d2, d3,...dn):以给定的形状创建一个数组,并在数组中加入在[0,1]之间

均匀分布的随机样本。

numpy.random.randn(d0, d1, d2, d3,....dn):以给定的形状创建一个数组,数组元素来符合标准正态

分布N(0,1)。

numpy.random.randint() :生成在左闭右开区间上离散均匀分布的整数值。

numpy.random.random_integers() :生成在左右两边都是闭区间上离散均匀分布的整数值。

numpy.random.random_sample() :以给定形状返回0,1之间(左闭右开)的随机浮点数

numpy.random.choice(a,size=None,replace=True,p=None)

numpy.random.choice() :若a为数组,则从a中选取元素;若a为单个int类型数,则选取range(a)中的数

replace是bool类型,为True,则选取的元素会出现重复;反之不会出现重复 p为数组,里面存放选到每个数

的可能性,即概率 。

3 生成数组的函数

arange()左闭右开

arange([start,] stop[, step,], dtype=None)

产生一个在区间 [start, stop) 之间,以 step 为间隔的数组

linspace()左闭右闭

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False,

dtype=None

在指定的间隔内返回均匀间隔的数字。返回num均匀分布的样本,在[start, stop]。

num:产生数据的个数。

endpoint:默认为True,包括断点。为‘False’时,不包括最后的端点。

retstep:默认为False,不显示步长。

4 数组属性方法总结

4.1 基本属性

a.dtype 数组元素类型 float32,uint8,...

a.shape 数组形状 (m,n,o,...)

a.size 数组元素数

a.itemsize 每个元素占字节数

a.nbytes 所有元素占的字节

a.ndim 数组维度

4.2 形状相关

a.flat 所有元素的迭代器

a.flatten() 将多维数组转化为一维数组,返回一个1维数组的复制

a.ravel() 返回一个1维数组,高效

a.resize(new_size) 改变形状

a.reshape() 它不会修改原来数组的值,而是返回一个新的数组

a.swapaxes(axis1, axis2) 交换两个维度的位置

a.transpose(*axex) 交换所有维度的位置

a.T 转置,转置返回的是对原数组的另一种view,所以改变转置会改变原来数组的值。

a.transpose()

a.squeeze() 去除所有长度为1的维度

a.diagonal() 返回数组a的对角线

4.3 填充复制

a.copy() 返回数组的一个复制

a.fill(value) 将数组的元组设置为特定值

4.4 转化

a.tolist() 将数组转化为列表

a.tostring() 转换为字符串

a.astype(dtype) 转化为指定类型

a.byteswap(False) 转换大小字节序

a.view(type_or_dtype) 生成一个使用相同内存,但使用不同的表示方法的数组

4.5 复数

a.imag 虚部

a.real 实部

a.conjugate() 复共轭

a.conj() 复共轭(缩写)

4.6 保存

a.dump(file) 将二进制数据存在file中

a.dump() 将二进制数据表示成字符串

a.tofile(fid, sep="",format="%s") 格式化ASCⅡ码写入文件

4.7 查找排序

a.nonzero() 返回所有非零元素的索引

a.sort(axis=-1) 沿某个轴排序,对于二维数组,默认相当于对每一行进行排序:

a.argsort(axis=-1) 沿某个轴,返回按排序的索引

a.searchsorted(b) 返回将b中元素插入a后能保持有序的索引值

4.8 元素数学操作

a.clip(low, high) 将数值限制在一定范围内

a.round(decimals=0) 近似到指定精度,decimals=1,保留一位小数

a.cumsum(axis=None) 累加和

a.cumprod(axis=None) 累乘积

4.9 约简操作

a.sum(axis=None) 求和,axis可以指定沿哪个方向进行求和

a.prod(axis=None) 求积

a.min(axis=None) 最小值

a.max(axis=None) 最大值

a.argmin(axis=None) 最小值索引

a.argmax(axis=None) 最大值索引

a.ptp(axis=None) 最大值减最小值

a.mean(axis=None) 平均值

a.std(axis=None) 标准差

a.var(axis=None) 方差

a.any(axis=None) 只要有一个不为0,返回真,逻辑或

a.all(axis=None) 所有都不为0,返回真,逻辑与

5 choose 函数实现条件筛选

np.choose(a, choices, out=None, mode='raise'):按照序号a对choices中的数进行选择。

>>control = np.array([[1,0,1],

[2,1,0],

[1,2,2]])

>>np.choose(control, [10, 11, 12])

>>array([[11, 10, 11],

[12, 11, 10],

[11, 12, 12]])

6 数组读写

对于文本文件,推荐使用

loadtxt

genfromtxt

savetxt

对于二进制文本文件,推荐使用

save

load

savez

6.1 数组的读取

loadtxt函数

loadtxt(fname, dtype=, comments='#', delimiter=None, converters=None,

skiprows=0, usecols=None, unpack=False, ndmin=0)

genfromtxt函数

能处理更多的情况,但相应的速度和效率会慢一些。

genfromtxt(fname, dtype=, comments='#', delimiter=None,

skiprows=0, skip_header=0, skip_footer=0, converters=None,

missing='', missing_values=None, filling_values=None, usecols=None,

names=None, excludelist=None, deletechars=None, replace_space='_',

autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None,

usemask=False, loose=True, invalid_raise=True)

参数说明

delimiter: 按照指定格式分割字符,缺省值为任何空白字符,如空格、制表符(\t)

autostrip: 默认情况下,当一行被分解为一系列字符串时,各个条目不会被删除前导或者尾随的空格。通过

将autostrip设置为True,可以覆盖此行为。

comments: 用于定义标记注释开始的字符串。默认为'#'开始。忽略注释标记后的任何字符。

fname: 要读取的文件名

skiprows: 要跳过的行数,可以用来读写含有标题的文本

usecols(0,2) 是指只使用0,2两列

unpack: 把每列当成一个向量输出,而不是合并在一起

converters: 对数据进行预处理converters={0:add_one},表示第零列使用函数

add_one进行预处理

skip_header: 跳过开头的特定行数

skip_footer: 跳过倒数的特定行数

names: 当其值为True时,就算标题被注释掉,也会从第一行读取名称

missing_values: 标记缺失的值

filling_values: 替换已标记的缺失的值

6.2 将数组写入文件

savetxt

numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='',

comments='# ', encoding=None)

6.3 numpy二进制格式

数组可以储存为二进制格式,单个的数组保存为.npy格式,多个数组保存为.npz格式。

保存方法:

save(file, arr) 保存单个数组,.npy 格式

savez(file, *args, **kwds) 保存多个数组,无压缩的 .npz 格式

savez_compressed(file, *args, **kwds) 保存多个数组,有压缩的 .npz 格式

读取方法:

load(file, mmap_mode=None) 对于 .npy,返回保存的数组,对于 .npz,返回一个名称-数组

对组成的字典。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值