Numpy&Pandas基本操作(一)

Numpy&Pandas基本操作(一)

Numpy

Numpy 中的属性

我们通过dir(numpy)可以看到,numpy 有很多的属性和方法,我们简单的介绍以下几种.

创建一个矩阵

我们可以使用numpy.array来创建一个矩阵,当然这个矩阵可以是 N 维的,创建的时候,需要传入一个数组,数组是多少维,创建的矩阵就是多少维. 创建矩阵的时候,也可以传入第二个参数(dtype), 指定数据类型.

1
2
3
4
5
6
7
8
9
10
import numpy as np

array = np.array([[1,2,3],
[4,5,6],
[7,8,9]], dtype=np.float64)
# array([[1, 2, 3],
# [4, 5, 6],
# [7, 8, 9]])
type(array)
numpy.ndarray

Numpy 中的数据类型(dtype)

布尔(Booleans):

类型备注字符代码
bool_兼容:Python bool‘?’
bool88 位

整数(Integers):

类型备注字符代码
byte兼容:C char‘b’
short兼容:C short‘h’
intc兼容:C int‘i’
int_兼容:Python int‘l’
longlong兼容:C long‘q’
intp以计算机的位数作为动态长度,保证能够存储指针.‘p’
int88 位
int1616 位
int3232 位
int6464 位

无符号整数(Unsigned integers):

类型备注字符代码
ubyte兼容:C unsigned char‘B’
ushort兼容:C unsigned short‘H’
uintc兼容:C unsigned int‘I’
uint兼容:Python int‘L’
ulonglong兼容:C long‘Q’
uintp以计算机的位数作为动态长度,保证能够存储指针.‘P’
uint88 位
uint1616 位
uint3232 位
uint6464 位

浮点数字(Floating-point numbers):

类型备注字符代码
half‘e’
single兼容:C float‘f’
double兼容:C double
float_兼容:Python float‘d’
longfloat兼容:C longfloat‘g’
float1616 位
float3232 位
float6464 位
float9696 位,与平台相关
float128128 位,与平台相关

复数浮点数(Complex floating-point numbers):

类型备注字符代码
csingle‘F’
complex_兼容:Python 复数‘D’
clongfloat‘G’
complex64两个 32 位浮点数
complex128两个 64 位浮点数
complex192两个 96 位浮动,与平台相关
complex256两个 128 位浮点数,与平台相关

任何 Python 对象(Any Python object):

类型备注字符代码
object_任何 Python 对象

数组的常用属性

有关数组内存布局的信息。

具体的解释,可以看这里(英文)这里(中文), 内置的标量类型.

这里具体解释一下C_CONTIGUOUSF_CONTIGUOUS, numpy在内存中存储矩阵的方式有两种,一种是C.style, 一种是Fortran.style, 可以通过ndarray.setflags来修改.

Fortran 和 matlab 语言中的多维数组存储方式为列优先原则,内循环最好是列循环;而 c 语言中的多维数组存储方式为行优先原则,内循环最好是行循环。编写程序的时候,让循环方式和存储方式匹配可以有效地提高程序的运行速度.

1
2
3
4
5
6
7
8
ndarray.flags
# C_CONTIGUOUS : True
# F_CONTIGUOUS : False
# OWNDATA : True
# WRITEABLE : True
# ALIGNED : True
# WRITEBACKIFCOPY : False
# UPDATEIFCOPY : False

数组维度信息(是一个元组)。

1
2
ndarray.shape
# (3, 3)

遍历数组时每个维度中的字节元组。

1
2
array.strides
# (24, 8)

数组维数。

1
2
array.ndim
# 2

Python 缓冲区对象指向数组的数据的开头。

1
2
array.data
# <memory at 0x11072fad0>

数组中的元素数。

1
2
array.size
# 9

一个数组元素的长度,以字节为单位

1
2
array.itemsize
# 8

数组元素消耗的总字节数。

1
2
array.nbytes
# 72

如果内存来自其他对象,则为基础对象, 否则为空

1
array.base

数组的常用方法

数组转换

方法描述
ndarray.item(*args)将数组元素复制到标准 Python 标量并返回它。
ndarray.tolist()将数组作为 a.ndim-levels 深层嵌套的 Python 标量列表返回。
ndarray.itemset(*args)将标量插入数组(如果可能,将标量转换为数组的 dtype)
ndarray.tostring([order])构造包含数组中原始数据字节的 Python 字节。
ndarray.tobytes([order])构造包含数组中原始数据字节的 Python 字节。
ndarray.tofile(fid[, sep, format])将数组作为文本或二进制写入文件(默认)。
ndarray.dump(file)将数组的 pickle 转储到指定的文件。
ndarray.dumps()以字符串形式返回数组的 pickle。
ndarray.astype(dtype[, order, casting, …])数组的副本,强制转换为指定的类型。
ndarray.byteswap([inplace])交换数组元素的字节
ndarray.copy([order])返回数组的副本。
ndarray.view([dtype, type])具有相同数据的数组的新视图。
ndarray.getfield(dtype[, offset])返回给定数组的字段作为特定类型。
ndarray.setflags([write, align, uic])分别设置数组标志 WRITEABLE,ALIGNED,(WRITEBACKIFCOPY 和 UPDATEIFCOPY)。
ndarray.fill(value)使用标量值填充数组。

形状操作

对于重新n整形,调整大小和转置,单个元组参数可以用将被解释为 n 元组的整数替换。

方法描述
ndarray.reshape(shape[, order])返回包含具有新形状的相同数据的数组。
ndarray.resize(new_shape[, refcheck])就地更改数组的形状和大小。
ndarray.transpose(*axes)返回轴转置的数组视图。
ndarray.swapaxes(axis1, axis2)返回数组的视图,其中 axis1 和 axis2 互换。
ndarray.flatten([order])将折叠的数组的副本返回到一个维度。
ndarray.ravel([order])返回一个扁平的数组。
ndarray.squeeze([axis])从形状除去单维输入一个。

项目选择和操作

对于采用 axis 关键字的数组方法,默认为 None。 如果 axis 为 None ,则将数组视为 1-D 数组。 轴的 任何其他值表示操作应继续进行的维度。

方法描述
ndarray.take(indices[, axis, out, mode])返回由给定索引处的 a 元素组成的数组。
ndarray.put(indices, values[, mode])为索引中的所有 n 设置。a.flat[n] = values[n]
ndarray.repeat(repeats[, axis])重复数组的元素。
ndarray.choose(choices[, out, mode])使用索引数组从一组选项中构造新数组。
ndarray.sort([axis, kind, order])对数组进行就地排序。
ndarray.argsort([axis, kind, order])返回将对此数组进行排序的索引。
ndarray.partition(kth[, axis, kind, order])重新排列数组中的元素,使得第 k 个位置的元素值位于排序数组中的位置。
ndarray.argpartition(kth[, axis, kind, order])返回将对此数组进行分区的索引。
ndarray.searchsorted(v[, side, sorter])查找应在其中插入 v 的元素以维护顺序的索引。
ndarray.nonzero()返回非零元素的索引。
ndarray.compress(condition[, axis, out])沿给定轴返回此数组的选定切片。
ndarray.diagonal([offset, axis1, axis2])返回指定的对角线。

数组计算

方法描述
ndarray.max([axis,out,keepdims,initial,…])沿给定轴返回最大值。
ndarray.argmax([axis, out])返回给定轴上的最大值的索引。
ndarray.min([axis,out,keepdims,initial,…])沿给定轴返回最小值。
ndarray.argmin([axis, out])沿给定一个轴线返回最小值的索引。
ndarray.ptp([axis, out, keepdims])沿给定轴的峰峰值(最大值 - 最小值)。
ndarray.clip([min,max,out])返回值限制为的数组。$[\min, \max]$
ndarray.conj()复合共轭所有元素。
ndarray.round([decimals, out])返回 a,每个元素四舍五入到给定的小数位数。
ndarray.trace([offset, axis1, axis2, dtype, out])返回数组对角线的总和。
ndarray.sum([axis, dtype, out, keepdims, …])返回给定轴上的数组元素的总和。相当于$\sum$
ndarray.cumsum([axis, dtype, out])返回给定轴上元素的累积和。
ndarray.mean([axis, dtype, out, keepdims])返回给定轴上数组元素的平均值。
ndarray.var([axis, dtype, out, ddof, keepdims])返回给定轴的数组元素的方差。
ndarray.std([axis, dtype, out, ddof, keepdims])返回沿给定轴的数组元素的标准偏差。
ndarray.prod([axis, dtype, out, keepdims, …])返回给定轴上的数组元素的乘积。相当于$\prod$
ndarray.cumprod([axis, dtype, out])返回沿给定轴的元素的累积乘积。
ndarray.all([axis, out, keepdims])如果所有元素都计算为 True,则返回 True。
ndarray.any([axis, out, keepdims])如果有任何一个元素计算为 True,则返回 true。

算术、矩阵乘法和比较运算

numpy对于大多数的运算符也都做了重写,具体如下:

比较运算符:

方法描述
ndarray.lt(self, value, /)返回 self<value.
ndarray.le(self, value, /)返回 self<=value.
ndarray.gt(self, value, /)返回 self>value.
ndarray.ge(self, value, /)返回 self>=value.
ndarray.eq(self, value, /)返回 self==value.
ndarray.ne(self, value, /);返回 self!=value.

array(bool)的真值测试:

方法描述
ndarray.bool(self, /)self != 0

一元操作:

方法描述
ndarray.neg(self, /)-self
ndarray.pos(self, /)+self
ndarray.abs(self)
ndarray.invert(self, /)~self

一元操作:

方法描述
ndarray.neg(self, /)-self
ndarray.pos(self, /)+self
ndarray.abs(self)
ndarray.invert(self, /)~self

算术:

方法描述
ndarray.add(self, value, /)返回 self+value.
ndarray.sub(self, value, /)返回 self-value.
ndarray.mul(self, value, /)返回 self*value.
ndarray.truediv(self, value, /)返回 self/value.
ndarray.floordiv(self, value, /)返回 self//value.
ndarray.mod(self, value, /)返回 self%value.
ndarray.divmod(self, value, /)返回 divmod(self, value).
ndarray.pow(self, value[, mod])返回 pow(self, value, mod).
ndarray.lshift(self, value, /)返回 self<<value.
ndarray.rshift(self, value, /)返回 self>>value.
ndarray.and(self, value, /)返回 self&value.
ndarray.or(self, value, /)返回 self
ndarray.xor(self, value, /)

就地算术运算方法:

方法描述
ndarray.iadd(self, value, /)返回 self+=value。
ndarray.isub(self, value, /)返回 self==value。
ndarray.imul(self, value, /)返回 self*=value。
ndarray.itruediv(self, value, /)返回 self/=value。
ndarray.ifloordiv(self, value, /)返回 self//=value。
ndarray.imod(self, value, /)返回 self%=value。
ndarray.ipow(self, value, /)返回 self**=value。
ndarray.ilshift(self, value, /)返回 self<<=value。
ndarray.irshift(self, value, /)返回 self>>=value。
ndarray.iand(self, value, /)返回 self&=value。
ndarray.ior(self, value, /)返回 self
ndarray.ixor(self, value, /)返回 self^=value。

矩阵乘法:

方法描述
ndarray.matmul(self, value, /)返回 self@value

Pandas

下一篇再写吧

评论

Agile Angularjs Animation Application Artificial Intelligence BP Babel Bokeh Book C4.5 CART CD CLI CSS CentOS CheetSheet Cinder Clipboardjs Concept Continuous Delivery DeepLearning Department DevOps Develop Development Directive Distribution Django Document ECMA ES5 ES6 ES7 Echarts Engine Entropy Filter Front End Gallery Git Gradient descent Hexo Horizon ID3 ID3.5 Icarus JavaScript Javascript KVM LaTeX LeetCode LibreOffice Linux MNIST Machine Learning Matrix MiddleWare Module Native Network Nginx NodeJS Numpy OOP OpenSSH OpenStack OpenStackApi Operations Oprations PDF PLA Pandas Pipline Probability Python React Relational algebra Restful Route SVD SVM Scalar Sigmoid Team Tempest Tensor TensorFlow Testing Time TimeMachine Tips Vector Vmware Vue Vuex WSGI Web Word Cut aliyun auth babel certbot debounce decision tree dns docker dockerfile eject footer git header homebrew html5 http https jupyter jwt keystone lab loader lodash mathematics migrate nav openstack outline pdf2html pm2 proto prototype python replace request response rp rt ruby scikit-learn section singular value decomposition sklearn stylus throttle url vue-router vue-ssr webpack 事件 事件代理 事件冒泡 事件捕获 低通滤波器 入门 全局 全局变量 全局对象 全栈 公式 决策树 函数 分类器 剪枝 加速 动态变量 匹配滤波边缘检测 卷积 卷积核 原型链 双向绑定 反向传播 发布 变量类型 可视化 基尼指数 官方示例 对偶形式 对象 小技巧 平移和查分边缘检测 思维导图 感知机模型 拉格朗日乘子法 推导 提交阶段 数据 数据绑定 最大似然估计 最小二乘估计 最小二乘回归树 最小二乘法 本地 朴素贝叶斯 朴素贝叶斯算法 机器学习 条件概率 标签模板 梯度下降 梯度方向边缘检测 概念 概率 模板字符串 正则 求导 流程 源码 源码阅读 灰度 特征工程 生命周期 矩阵 神经网络 私有对象 科学计算 算法 算法实现 线性回归 缺失 联合概率 脚手架 识别 调试 贝叶斯 贝叶斯判定准则 边缘检测 边际概率 闭包 间隔 防抖动 限流 随机森林 高斯分布 高通滤波器
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×