- 数组
- 6个常见函数
- arange(起始值,终止值,步长)
- zeros/ones(shape)
- empty(shape)分配一段内存,但不赋值.一般就像是一些随机的噪音
- linspace(下限,上限,项数)和logspace(下限(指数),上限(指数),项数,base=?(default = 10))
- 修改数组的shape属性
- 6个常见函数
import numpy as np
a = np.arange(6)
b = np.zeros(4)
c = np.ones((2,3))
d = np.empty(4)
>>>array([0, 1, 2, 3, 4, 5])
>>>array([0., 0., 0., 0.])
>>>array([[1., 1., 1.],
[1., 1., 1.]])
>>>array([7.08703453e-312, 7.08703453e-312, 7.08703453e-312, 7.08703478e-312])
f = np.linspace(5,10,10)
>>>array([ 5. , 5.55555556, 6.11111111, 6.66666667, 7.22222222,
7.77777778, 8.33333333, 8.88888889, 9.44444444, 10. ])
g = g = np.logspace(1,-1,3)
>>>g
>>>g = np.logspace(1,-1,3)
a.shape = (2,3)
>>>a
>>>array([[0, 1, 2],
[3, 4, 5]])
- data type(数据类型)
>>>a = np.array([1,2,3,4,5,6])
>>>a.dtype
>>>dtype('int32')
>>>
>>>b = np.array([1.,2.,3.,4.,5.,6.])
>>>b.dtype
>>>dtype('float64')
- 切片和视图
- 切片操作
a = np.arange(8) a[::-1] array([7, 6, 5, 4, 3, 2, 1, 0]) a[2:6] array([2, 3, 4, 5]) a[1::3] array([1, 4, 7])
- 数组切片的一个重要特性是,数组切片是原始数组的视图,也就是数组切片操作并没有复制数据,例:
a = np.arange(6) b = a[1::2] b[0] = 99 print(b) print(a) >>>[99 3 5] [ 0 99 2 3 4 5]
- 算术和广播
数组的算术
a = np.arange(6) a - 1 >>>array([-1, 0, 1, 2, 3, 4]) a + a >>>array([ 0, 2, 4, 6, 8, 10]) 2*a + 1 >>>array([ 1, 3, 5, 7, 9, 11])
用数组的算术方法表示导数
(y[1:]-y[:1])/(x[1:]-x[:1]) #或者 np.gradient(y)/np.gradient(x)
Numpy可以将不同形状的数组一起广播(就像是自动扩展)
当两个数组中的两个轴的秩相等时,这两个元素之间的操作是逐元素计算的
当数组a上的轴的长度为1且数组b上的相同轴的长度大于1时,a的值在该维度上延伸
例如
a = np.arange(4) a.shape = (2,2) b = np.array([[100],[1000]]) a * b >>> array([[0,100],[2000,3000]]) a = np.array(12) a.shape = (4,3) b = np.array([10,100,1000]) a + b >>>array([ [10,101,1002], [13,104,1005], [16,107,1008], [19,110,1011]])
- 花式索引
获取许多任意索引的数据,获取某种符合某种模式的索引但索引不够规则
花式索引的举例
>>>a = 2*np.arange(8)**2 + 1 >>>a >>>array([ 1, 3, 9, 19, 33, 51, 73, 99], dtype=int32) >>>a[[3,-1,1]] >>>array([19, 99, 3], dtype=int32) >>>fib = np.array([0,1,1,2,3,5]) >>>a[fib] >>>array([ 1, 3, 3, 9, 19, 51], dtype=int32) >>>b = a[[[[2,7],[3,4]]]] >>>[[ 9 99] [19 33]]
不能在一个维度中混合使用切片和花式索引
>>>a = np.arange(16)-8
>>>a.shape = (4,4)
>>>a
>>>array([[-8, -7, -6, -5],
[-4, -3, -2, -1],
[ 0, 1, 2, 3],
[ 4, 5, 6, 7]])
>>>a[:,[2,-1,0]]
>>>array([[-6, -5, -8],
[-2, -1, -4],
[ 2, 3, 0],
[ 6, 7, 4]])
>>>fib = np.array([0,1,1,2,3])
>>>a[fib,::-2]
>>>array([[-5, -7],
[-1, -3],
[-1, -3],
[ 3, 1],
[ 7, 5]])
在多个维度中的每个维度上单独使用一维花式索引
>>>i = np.arange(4) >>>a[i,i] >>>array([-8, -3, 2, 7]) >>>a[i[1:],i[1:]-1] >>>array([-4, 1, 6]) >>>a[i[:3],i[:3]+1] >>>array([-7, -2, 3])
- 掩模
掩模与花式索引相似,但是掩模必须是一个布尔数组
掩模作用于形状相同或者轴长度相同的数组进行索引
如果指定的位置为True,则显示对应的值;如果指定的位置为False,则不显示值
>>>a = np.arange(9) >>>a.shape = (3,3) >>>m = np.ones(3,dtype=bool) >>>m >>>array([ True, True, True]) >>>a[m,m] >>>array([0, 4, 8])
生成有效的掩模
>>>a = np.arange(16)
>>>a.shape = (4,4)
>>>a < 5
>>>array([[ True, True, True, True],
[ True, False, False, False],
[False, False, False, False],
[False, False, False, False]])
利用掩模
>>>a = np.arange(8) >>>a.shape = (2,4) >>>m = (a>5) >>>a[m] >>>array([6, 7]) >>>a[a<5] >>>array([0, 1, 2, 3, 4])
Numpy 按位运算符
| ~ | bitwise_not(x) |
| | | bitwise_or(x,y) |
| ^ | bitwise_xor(x,y) x和y中只有一个True时 |
| & | bitwise_and(x,y) |
例:
>>>a[(a<7)^(a>=3)] >>>array([0, 1, 2, 7])
- 结构数组
结构化数组或者记录数组
构造结构化数组
num表示该列该有的元素数,数量默认为1
>>>(" ", ,num)#num default = 1
- 通用函数
| add(a,b) | 加法 |
| subtract(a,b) | 减法 |
| multiply(a,b) | 乘法 |
| divide(a,b) | 除法 |
| power(a,b) | 乘方 |
| mod(a,b) | |
| abs(a) | |
| sqrt(a) | |
| conj(a) | 复数共轭 |
| exp(a) | |
| exp2(a) | |
| log(a) | |
| log2(a) | |
| log10(a) | |
| sin(a) | |
| cos(a) | |
| tan(a) | |
| bitwise_or(a,b) | 按位或运算 |
| bitiwise_xor(a,b) | 按位异或运算 |
| bitiwise_and(a,b) | 按位与运算 |
| invert(a) | 按位取反 |
| left_shift(a,b) | 向左按位移动 |
| right_shift(a,b) | 向右按位移动 |
| minimun(a,b) | 两个矩阵对应位置上的两个元素中的最小值构成的矩阵 |
| maximum(a,b) | 两个矩阵对应位置上的两个元素中的最小值构成的矩阵 |
| isreal(a) | 矩阵中是实数的元素显示为True,否则为False |
| iscomplex(a) | 矩阵中是虚数的元素显示为True,否则为False |
| isfinite(a) | 矩阵中是有限数的元素显示为True,否则为False |
| isinf(a) | 矩阵中是无限数的元素显示为True,否则为False |
| isnan(a) | 矩阵中是数的元素显示为True,否则为False |
| floor(a)/ceil(a)/trunc(a) | 三个取整函数 取刚好小于/大于的整数取整数部分 |
- 全局函数
| sum(a) | |
| prod(a) | 累成数组中所有元素 |
| min(a) | |
| max(a) | |
| argmin(a) | 返回数组中最小的元素的索引 |
| argmax(a) | |
| dot(a,b) | 点积 |
| cross(a,b) | 叉积 |
| mean(a) | 平均数 |
| median(a) | 中位数 |
| average(a,weights=none) | 加权平均数 |
| std(a) | 标准差 |
| var(a) | 方差 |
| unique(a) | 返回数组中只出现一次的元素 |
| append(a,b) | 连接两个数组 |



