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)
type(array) numpy.ndarray
|
Numpy 中的数据类型(dtype)
布尔(Booleans):
类型 |
备注 |
字符代码 |
bool_ |
兼容:Python bool |
‘?’ |
bool8 |
8 位 |
|
整数(Integers):
类型 |
备注 |
字符代码 |
byte |
兼容:C char |
‘b’ |
short |
兼容:C short |
‘h’ |
intc |
兼容:C int |
‘i’ |
int_ |
兼容:Python int |
‘l’ |
longlong |
兼容:C long |
‘q’ |
intp |
以计算机的位数作为动态长度,保证能够存储指针. |
‘p’ |
int8 |
8 位 |
|
int16 |
16 位 |
|
int32 |
32 位 |
|
int64 |
64 位 |
|
无符号整数(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’ |
uint8 |
8 位 |
|
uint16 |
16 位 |
|
uint32 |
32 位 |
|
uint64 |
64 位 |
|
浮点数字(Floating-point numbers):
类型 |
备注 |
字符代码 |
half |
|
‘e’ |
single |
兼容:C float |
‘f’ |
double |
兼容:C double |
|
float_ |
兼容:Python float |
‘d’ |
longfloat |
兼容:C longfloat |
‘g’ |
float16 |
16 位 |
|
float32 |
32 位 |
|
float64 |
64 位 |
|
float96 |
96 位,与平台相关 |
|
float128 |
128 位,与平台相关 |
|
复数浮点数(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_CONTIGUOUS
和F_CONTIGUOUS
, numpy
在内存中存储矩阵的方式有两种,一种是C.style
,
一种是Fortran.style
, 可以通过ndarray.setflags
来修改.
Fortran 和 matlab 语言中的多维数组存储方式为列优先原则,内循环最好是列循环;而 c
语言中的多维数组存储方式为行优先原则,内循环最好是行循环。编写程序的时候,让循环方式和存储方式匹配可以有效地提高程序的运行速度.
数组维度信息(是一个元组)。
遍历数组时每个维度中的字节元组。
数组维数。
Python 缓冲区对象指向数组的数据的开头。
数组中的元素数。
一个数组元素的长度,以字节为单位
数组元素消耗的总字节数。
如果内存来自其他对象,则为基础对象, 否则为空
数组的常用方法
数组转换
形状操作
对于重新n
整形,调整大小和转置,单个元组参数可以用将被解释为 n 元组的整数替换。
项目选择和操作
对于采用 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.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。 |
矩阵乘法:
Pandas
下一篇再写吧