学习Numpy的基本应用
首先需要导入Numpy包
一、ndarray数组
1、数组的生成
可以与C语言一样用索引来定位数组元素,如:
也可以将数组改为二维数组
1 2 3 4
| >>>a.shape = 2,2 >>>print(a) [[5 1] [2 3]]
|
特例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| >>>b = zeros((2,3),dtype=int) [[0 0 0] [0 0 0]] >>>a = ones((3,2),dtype=int) * 5 [[5 5] [5 5] [5 5]] >>>b.fill(-4.8) [[-4 -4 -4] [-4 -4 -4]] >>>a = arange(0,80,10) array([ 0, 10, 20, 30, 40, 50, 60, 70]) >>>a = identity(3,dtype=int) array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]])
|
2、数组的类型
复数数组
1 2 3 4
| >>>a = array([1 + 1j, 2, 3, 4]) >>>a.real >>>a.imag >>>a.conj()
|
类型转换:
1 2
| >>>asarray(a, dtype=float64) >>>a.astype(float64)
|
3、数组的属性
1 2 3 4
| >>>a.size >>>a.shape >>>a.nbytes >>>a.ndim
|
4、数组索引切片
花式索引:
与切片不同花式索引返回的是对象的一个复制不是引用。
1 2
| >>>indices = [1, 2, -3] >>>y = a[indices]
|
还可以用bool值
1 2
| >>>mask = array([0,1,1,0,0,1,0,0],dtype=bool) >>>a[mask]
|
mask数组可以用布尔表达式生成
1 2 3 4
| >>>from numpy.random import rand >>>a = rand(10) >>>mask = a > 0.5 >>>a[mask]
|
二维花式索引:
1 2 3 4 5 6
| >>>a[(0,1,2,3,4), (1,2,3,4,5)]
>>>a[3:, [0,2,5]] >>>mask = array([1,0,1,0,0,1],dtype=bool) >>>a[mask, 2] >>>y = a[:3]
|
where语句:
1 2 3 4 5
| >>>loc = where(a > 10) >>>a[loc] (array([0, 0, 1, 1], dtype=int64), array([1, 3, 2, 3], dtype=int64)) >>>rows, cols = where(a>10)
|
5、数组的方法
求和:
1 2 3 4 5 6
| >>>a = array([[1,2,3],[4,5,6]])a.sum(axis=1) >>>sum(a) >>>sum(a,axis=0) array([5, 7, 9]) >>>sum(a,axis=1) array([ 6, 15])
|
求积:
1 2
| >>>a.prod() >>>prod(a, axis=0)
|
最大值最小值:
1 2 3 4
| >>>a.max() >>>a.max(axis=-1) >>>a.min() >>>a.min(axis=0)
|
最大值最小值位置:
1 2
| >>>a.argmin() >>>a.argmax(axis=0)
|
均值:
1 2 3
| >>>a.mean() >>>a.mean(axis=-1) >>>average(a, axis = 0, weights=[1,2])
|
标准差:
方差:
将数值限制在某个范围内:
1 2 3 4
| >>>a = array([[1, 2, 3],[4, 5, 6]]) >>>a.clip(3,5) array([[3, 3, 3], [4, 5, 5]])
|
计算最大值与最小值之差:
近似方法:
6、数组排序
分为函数和方法
注意:其他三种不改变原数组,只有data.sort()方法会改变
1 2 3 4
| >>>sort(weights) >>>data.sort() >>>argsort(weights) >>>data.argsort()
|
对二维数组默认相当于对每一行的元素进行排序
1 2 3 4 5 6 7 8 9 10 11 12 13
| >>>a = array([ [.2, .1, .5], [.4, .8, .3], [.9, .6, .7] ]) >>>sort(a) array([[ 0.1, 0.2, 0.5], [ 0.3, 0.4, 0.8], [ 0.6, 0.7, 0.9]]) >>>sort(a, axis = 0) array([[ 0.2, 0.1, 0.3], [ 0.4, 0.6, 0.5], [ 0.9, 0.8, 0.7]])
|
7、数组形状
修改形状
1 2 3
| >>>a = arange(6) >>>a.shape = 2,3 >>>b = a.reshape(3,2)
|
数组连接
1 2 3 4 5 6 7 8 9 10
| x = array([ [0,1,2], [10,11,12] ]) y = array([ [50,51,52], [60,61,62] ]) z = concatenate((x,y)) z = concatenate((x,y), axis=1)
|
降维
1 2 3
| a = array([[0,1], [2,3]]) b = a.flatten()
|
8、数组对角线
1 2 3
| >>>a.diagonal() >>>a.diagonal(offset=1) >>>a.diagonal(offset=-1)
|
最后更新时间: