( U- I& _7 ~5 H) P) C$ L从图中我们看出来 NumPy 其实在存储数据的时候,数据与数据的地址都是连续的,这样就给我们操作带来了好处,处理速度快。# R) t# P I2 v# E) z2 I; ^
支持并行化运算,也叫向量化运算。当然向量是数学当中的概念,我们不过多解释,只需要知道他的优势即可。也就是说 NumPy 底层使用 BLAS 做向量,矩阵运算。0 U0 ~! }6 Y* }- d Z3 d. \ T u
numpy的许多函数不仅是用C实现了,还使用了BLAS(一般Windows下link到MKL的,下link到OpenBLAS) , \5 W1 M; G: {8 c) W基本上那些BLAS实现在每种操作上都进行了高度优化 ! |" V/ _+ p% J( o3 `% K例如使用AVX向量指令集,甚至能比你自己用C实现快上许多,更不要说和用Python实现的比 $ k8 i( D$ E+ u+ G3 \5 G- Q1" F6 h; D4 G7 R6 y4 ], y
2# B Z# i5 G& S' Q) [ S, p
3 : h8 h6 }- y3 O7 b由此可见,NumPy 就非常适合做大规模的数值计算和数据分析。2 Z2 L* m; J$ D; c
. P9 v W* z* h
2. 数组属性 $ C' ?. M! s: p ( @/ R( x" ?9 Y4 e# x8 a" I. s: L数组属性反映了数组本身固有的信息。 , P/ V! p! V' ?/ |: I# ^ . `6 n- Z1 X$ ~5 B5 q属性名字 属性解释+ r, W: }9 v, G* C2 J' M' f5 m
ndarray.shape 数组维度的元组 * U( A/ s0 `6 Y. p, @0 L, J" N yndarray.flags 有关阵列内存布局的信息6 i/ O- Q( t9 ~. [$ R
ndarray.ndim 数组维数 # N( q9 A$ j+ g0 [7 ^; k3 Nndarray.size 数组中的元素数量9 I- Y) K% Y" O/ b
ndarray.itemsize 一个数组元素的长度(字节) ! q# S2 G$ W2 A% C3 N1 [6 J% xndarray.nbytes 数组元素消耗的总字节数. U" }4 H; {" r& h' a# N, [
示例代码如下: H) z5 x5 I8 p U t+ Iimport numpy as np; i# W0 x) j, m5 n l" W9 e
: z6 _. U9 j& y# 数组的属性' \! F$ E) S7 W! b U, `; g5 E
# 1.创建数组 这里先不用管 后续会详细讲解数组的创建方法 , B- K6 W; ~+ Z8 Z' Q; L: Oa = np.array([[1,2,3],[4,5,6]])4 q- |! z/ S! n, v5 e
b = np.array([1,2,3,4]) 6 l [+ N% h/ H {3 \/ r1 \0 jc = np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]]) , K; d% F3 U0 S' b) r: z S. V. ~# 创建数组的时候指定类型 8 w; R M+ Z# ]* [0 E# A) F, }9 u, M6 i# dtype更多取值: int complex bool object- X- T7 V4 t- o4 D# b
# 还可以显示的定义数据位数的类型,如: int64、int16、float128、complex128。+ T5 ]9 Q* b9 G k. \) z
d = np.array([1,2,3,4], dtype=np.float). J: s! h; o W$ b" _
* k5 ]& B* v6 d9 W- w& j! s* G4. 创建随机数组 ( l4 Y) Q6 t- R 7 m. E0 g$ Y* znp.random 模块生成随机数组,更加方便,示例代码如下: A3 U0 O* o5 r + `7 b x; H2 r' @2 {9 u1 y; r& V上面产生的数据是属于一个均匀分布。那么什么是均匀分布呢?在概率论和统计学中,均匀分布也叫矩形分布,它是对称概率分布,在相同长度间隔的分布概率是等可能的。 均匀分布由两个参数a和b定义,它们是数轴上的最小值和最大值,通常缩写为U(a,b)。 + u% u8 t/ P3 H7 | 2 i5 U; V- |7 y. u/ b- [) D正态分布?给定均值/标准差/维度的正态分布,示例代码如下:: B- N. Y0 S( L0 H! g/ U: _# U
2 O' b9 N- `0 ?3 a" v正态分布是一种概率分布。正态分布是具有两个参数μ和σ的连续型随机变量的分布,第一参数μ是服从正态分布的随机变量的均值,第二个参数σ是此随机变量的方差,所以正态分布记作N(μ,σ )。 7 u$ H+ _8 f+ P/ p0 D3 E$ r7 Y- B' Y
生活、生产与科学实验中很多随机变量的概率分布都可以近似地用正态分布来描述。μ决定了其位置,其标准差σ。决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。 9 z6 z; M; ?+ ^& c& y# e% I, h/ W8 x; P( b. m: N: B0 z
标准差如何来?方差是在概率论和统计方差衡量一组数据时离散程度的度量。& }5 `. x' s i$ ^
/ H. p3 s3 H) S7 ~; Z" ?' `其中M为平均值,n为数据总个数,s为标准差,s^2可以理解一个整体为方差。 % z# T: R% {# A7 i* j8 |0 i: T V8 h; e. w3 Y3 l4 Y% E
通过索引切片等获取数组中的值,一维数组示例代码如下:2 k# A; }" Z9 ]1 I/ D2 J3 N
$ E' M6 u8 \4 {' W5 L6 X
二维数组示例代码如下:9 |& H1 c" T5 e. X9 g9 r
7 l! S( d" i5 F5 E. n$ b
三维数组示例代码如下:1 j) G- l: L9 C
@4 L0 ?: N& M + s; f$ V8 u1 G4. 数组形状与类型变化 t+ C. B7 T7 \ R |- x" _, o, M* F
1. ndarray.reshape(shape[, order]) Returns an array containing the same data with a new shape. 示例代码如下: % O! G5 ^, z+ E$ S' b) T3 P3 R* X; ]
2. ndarray.resize(new_shape[, refcheck]) Change shape and size of array in-place. 示例代码如下:: N. R, [- v9 l& J9 Y% c* v* \6 l
+ a! _" v+ N" l5 x% v3 G9 A; i4 d3. 修改类型 ndarray.astype(type) 示例代码如下: ) r( [2 f0 F5 v" A " p! b- J$ ]: F, g. ^ [7 Q2 t- _4. 修改小数位数 ndarray.round(arr, out) Return a with each element rounded to the given number of decimals. 示例代码如下: & R5 A9 R7 X# t2 [* ?' S9 Q J
5. ndarray.flatten([order]) Return a copy of the array collapsed into one dimension. 示例代码如下: 1 m9 Q) y/ R F. h / U+ X% l9 Q7 m' l8 j* a2 H4 J. a/ }6. ndarray.T 数组的转置 将数组的行、列进行互换 示例代码如下: 4 i6 z6 i# v* S8 m6 w 2 z7 v" W8 `$ ?+ ]. s& I7. ndarray.tostring([order])或者ndarray.tobytes([order]) Construct Python bytes containing the raw data bytes in the array. 转换成bytes3 t0 F+ L9 g: T+ {+ E! \
1 W; R9 L) P, V" k8 G8. ndarray.copy([order]) Return a copy of the array. 当我们不想修改某个数据的时候,就可以去进行拷贝操作。在拷贝的数据上进行操作,示例代码如下:4 k/ c% `/ `+ W
5 i: q! G" Z" }1 Q# f- Q2 H5 ?1 d5 d
, G, {: g$ [2 S+ o5 q; a6 R
4. 数组运算 8 N8 k h+ p9 N. }8 G7 ~' ?. {' v1 o0 V+ s$ l, @
4.1 逻辑运算 5 N1 B" E) @7 C. Y s- S/ ?! ~2 r) z6 ?& ^2 ?6 g" z1 f
# X* @0 [! ]7 p% ~$ T通用判断函数,np.all(),示例代码如下: 4 ~1 Z- P$ w# ]8 A. V8 w, ?, Z1 J* ?! V! v4 C$ r
np.unique():返回新的数组的数值,不存在重复的值,示例代码如下:6 ^- b: e. ~) }6 H' D& W( g