开源数学库 Numerical Python

NumPy

NumPy(Numerical Python的简称)是一个基于Python的开源数学库,它提供了了一个易于使用的数组对象和一系列操作数组的函数,可以高效地进行大规模数值运算。

以下是NumPy的简单介绍:

数组对象

NumPy的核心是数组对象,它是一个多维的、大小可变的、元素类型为浮点数或整数的数据结构。NumPy数组可以包含任何数据类型,包括字符串、整数、浮点数等。数组对象提供了了一系列操作,如索引、切片、广播等,可以快速、高效地进行数学运算。

数组索引

NumPy数组的索引方式和普通Python列表不同。在NumPy数组中,可以使用布尔数组作为索引,可以使用花括号{}表示范围,也可以使用步长来指定间隔。

数组切片

NumPy数组的切片方式和普通Python列表也不同。在NumPy数组中,可以使用冒号分隔维度和切片范围,也可以使用步长来指定间隔。

如下图示例,其中 a = np.arange(24).reshape((2,3,4)) + 1。

数组广播

NumPy数组的广播是指当一个操作符(如+、-、*等)应用于两个不同大小的数组时,如何将两个数组的对应元素进行运算。广播遵循一定的规则:如果数组的维度不同,则将缺失的维度补为1,如果数组的大小不同,则将缺失的元素用NaN填充。

广播的规则:

让所有输入数组都向其中形状最长的数组看齐,形状中不足的部分都通过在前面加 1 补齐。
输出数组的形状是输入数组形状的各个维度上的最大值。
如果输入数组的某个维度和输出数组的对应维度的长度相同或者其长度为 1 时,这个数组能够用来计算,否则出错。
当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。

简单理解:对两个数组,分别比较他们的每一个维度(若其中一个数组没有当前维度则忽略),满足:

数组拥有相同形状。
当前维度的值相等。
当前维度的值有一个是 1。
若条件不满足,抛出 “ValueError: frames are not aligned” 异常。

数组运算

NumPy提供了了一系列用于操作数组的函数,如add、subtract、multiply、divide等。这些函数可以用于对数组进行加减乘除等运算,也可以用于对数组进行逻辑运算、排序等操作。详见内置函数一览表。

矩阵对象

NumPy中的矩阵对象是一个二维的、大小固定的、元素类型为浮点数或整数的数据结构。矩阵对象提供了一系列操作,如矩阵乘法、转置、求逆等。详见内置函数一览表。

字符函数

NumPy提供了一系列用于操作字符的函数,如char、string等。这些函数可以将字符串转换为NumPy数组,也可以将NumPy数组转换为字符串。详见内置函数一览表。

总之,NumPy是一个强大的数学库,可以用于各种数值计算任务,包括数据分析、机器学习、图像处理等。它提供了一系列易于使用的数组对象和操作函数,可以大大简化数值计算的操作,提高计算效率。

NumPy 数据类型

numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上,其中部分类型对应为 Python 内置的类型。下表列举了常用 NumPy 基本类型。

bool_ 布尔型数据类型(True 或者 False)
int_ 默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
intc 与 C 的 int 类型一样,一般是 int32 或 int 64
intp 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8 字节(-128 to 127)
int16 整数(-32768 to 32767)
int32 整数(-2147483648 to 2147483647)
int64 整数(-9223372036854775808 to 9223372036854775807)
uint8 无符号整数(0 to 255)
uint16 无符号整数(0 to 65535)
uint32 无符号整数(0 to 4294967295)
uint64 无符号整数(0 to 18446744073709551615)
float_ float64 类型的简写
float16 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
float32 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
float64 双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
complex_ complex128 类型的简写,即 128 位复数
complex64 复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128 复数,表示双 64 位浮点数(实数部分和虚数部分)
numpy 的数值类型实际上是 dtype 对象的实例,并对应唯一的字符,包括 np.bool_,np.int32,np.float32,等等。

内置函数一览表

abs
absolute
add
add_docstring
add_newdoc
add_newdoc_ufunc
all
allclose
alltrue
amax
amin
angle
any
append
apply_along_axis
apply_over_axes
arange
arccos
arccosh
arcsin
arcsinh
arctan
arctan2
arctanh
argmax
argmin
argpartition
argsort
argwhere
around
array
array2string
array_equal
array_equiv
array_repr
array_split
array_str
asanyarray
asarray
asarray_chkfinite
ascontiguousarray
asfarray
asfortranarray
asmatrix
atleast_1d
atleast_2d
atleast_3d
average
bartlett
base_repr
binary_repr
bincount
bitwise_and
bitwise_not
bitwise_or
bitwise_xor
blackman
block
bmat
bool_
broadcast
broadcast_arrays
broadcast_shapes
broadcast_to
busday_count
busday_offset
busdaycalendar
byte
byte_bounds
bytes_
c_
can_cast
cast
cbrt
cdouble
ceil
cfloat
char
character
chararray
choose
clip
clongdouble
clongfloat
column_stack
common_type
compare_chararrays
compat
complex128
complex64
complex_
complexfloating
compress
concatenate
conj
conjugate
convolve
copy
copysign
copyto
corrcoef
correlate
cos
cosh
count_nonzero
cov
cross
csingle
ctypeslib
cumprod
cumproduct
cumsum
datetime64
datetime_as_string
datetime_data
deg2rad
degrees
delete
deprecate
deprecate_with_doc
diag
diag_indices
diag_indices_from
diagflat
diagonal
diff
digitize
disp
divide
divmod
dot
double
dsplit
dstack
dtype
e
ediff1d
einsum
einsum_path
emath
empty
empty_like
equal
errstate
euler_gamma
exp
exp2
expand_dims
expm1
extract
eye
fabs
fastCopyAndTranspose
fft
fill_diagonal
find_common_type
finfo
fix
flatiter
flatnonzero
flexible
flip
fliplr
flipud
float16
float32
float64
float_
float_power
floating
floor
floor_divide
fmax
fmin
fmod
format_float_positional
format_float_scientific
format_parser
frexp
from_dlpack
frombuffer
fromfile
fromfunction
fromiter
frompyfunc
fromregex
fromstring
full
full_like
gcd
generic
genfromtxt
geomspace
get_array_wrap
get_include
get_printoptions
getbufsize
geterr
geterrcall
geterrobj
gradient
greater
greater_equal
half
hamming
hanning
heaviside
histogram
histogram2d
histogram_bin_edges
histogramdd
hsplit
hstack
hypot
i0
identity
iinfo
imag
in1d
index_exp
indices
inexact
inf
info
infty
inner
insert
int16
int32
int64
int8
int_
intc
integer
interp
intersect1d
intp
invert
is_busday
isclose
iscomplex
iscomplexobj
isfinite
isfortran
isin
isinf
isnan
isnat
isneginf
isposinf
isreal
isrealobj
isscalar
issctype
issubclass_
issubdtype
issubsctype
iterable
ix_
kaiser
kron
lcm
ldexp
left_shift
less
less_equal
lexsort
lib
linalg
linspace
little_endian
load
loadtxt
log
log10
log1p
log2
logaddexp
logaddexp2
logical_and
logical_not
logical_or
logical_xor
logspace
longcomplex
longdouble
longfloat
longlong
lookfor
ma
mask_indices
mat
math
matmul
matrix
max
maximum
maximum_sctype
may_share_memory
mean
median
memmap
meshgrid
mgrid
min
min_scalar_type
minimum
mintypecode
mod
modf
moveaxis
msort
multiply
nan
nan_to_num
nanargmax
nanargmin
nancumprod
nancumsum
nanmax
nanmean
nanmedian
nanmin
nanpercentile
nanprod
nanquantile
nanstd
nansum
nanvar
nbytes
ndarray
ndenumerate
ndim
ndindex
nditer
negative
nested_iters
newaxis
nextafter
nonzero
not_equal
numarray
number
obj2sctype
object_
ogrid
oldnumeric
ones
ones_like
outer
packbits
pad
partition
percentile
pi
piecewise
place
poly
poly1d
polyadd
polyder
polydiv
polyfit
polyint
polymul
polynomial
polysub
polyval
positive
power
printoptions
prod
product
promote_types
ptp
put
put_along_axis
putmask
quantile
r_
rad2deg
radians
random
ravel
ravel_multi_index
real
real_if_close
rec
recarray
recfromcsv
recfromtxt
reciprocal
record
remainder
repeat
require
reshape
resize
result_type
right_shift
rint
roll
rollaxis
roots
rot90
round
round_
row_stack
s_
safe_eval
save
savetxt
savez
savez_compressed
sctype2char
sctypeDict
sctypes
searchsorted
select
set_numeric_ops
set_printoptions
set_string_function
setbufsize
setdiff1d
seterr
seterrcall
seterrobj
setxor1d
shape
shares_memory
short
show_config
show_runtime
sign
signbit
signedinteger
sin
sinc
single
singlecomplex
sinh
size
sometrue
sort
sort_complex
source
spacing
split
sqrt
square
squeeze
stack
std
str_
string_
subtract
sum
swapaxes
take
take_along_axis
tan
tanh
tensordot
test
testing
tile
timedelta64
trace
tracemalloc_domain
transpose
trapz
tri
tril
tril_indices
tril_indices_from
trim_zeros
triu
triu_indices
triu_indices_from
true_divide
trunc
typecodes
typename
ubyte
ufunc
uint
uint16
uint32
uint64
uint8
uintc
uintp
ulonglong
unicode_
union1d
unique
unpackbits
unravel_index
unsignedinteger
unwrap
use_hugepage
ushort
vander
var
vdot
vectorize
version
void
vsplit
vstack
where
who
zeros
zeros_like


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部