NumPy库
1、标准导入方法:import numpy as np
from numpy import*(不推荐,因为numpy库中包含大量与python内建函数重名的函数,如:max和min)
2、生成ndarray:array函数
(1) data1=[6,7.5,8,0,1]
arr1=np.array(data1)
data2=[[1,2,3,4],[5,6,7,8]]
arr2=np.array(data2) (自动转换为多维数组)
arr2.ndim(查看数组维数)
arr2.shape(查看每一维度的数量)
arr2.dtype(查看数组数据类型)
(2) np.zeros(10) np.zeros((5,10)) (创建全零数组)
(3) np.ones(10) np.ones((5,10)) (创建全1数组)
(4) np.empty(10) np.empty((5,10)) (创建五初始化数值数组)
(5) np.arange(10) (arange函数为range函数的数组版,生成数组为array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]))
3、定义数组数据类型
arr3=np.array([1,2,3],dtype=np.float64) (建立数组并定义数据类型)
arr4=arr3.astype(np.int32) (改变数组数据类型)
arr4.astype(arr3.dtype) (arr4数组数据类型改为arr3数组的数据类型)
4、数组算数
arr2*arr2 (等尺寸数组相乘) arr2*0.5(数组乘常数)
Out[54]:
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
array([[ 1, 4, 9, 16],
[25, 36, 49, 64]])
array([[ 0.5, 1. , 1.5, 2. ],
[ 2.5, 3. , 3.5, 4. ]])
arr2-arr2 (等尺寸数组相减)
In [56]: arr2-arr2 Out[56]: array([[0, 0, 0, 0], [0, 0, 0, 0]])
1/arr2 arr2/1 (数组除法)
In [57]: 1/arr2 Out[57]: array([[ 1. , 0.5 , 0.33333333, 0.25 ], [ 0.2 , 0.16666667, 0.14285714, 0.125 ]]) In [58]: arr2/1 Out[58]: array([[ 1., 2., 3., 4.], [ 5., 6., 7., 8.]])
arr1>arr2 (数组大小比较,产生布尔值数组)
In [69]: arr1 Out[69]: array([[3, 2, 4, 5], [3, 1, 6, 9]]) In [70]: arr2 Out[70]: array([[1, 2, 3, 4], [5, 6, 7, 8]]) In [71]: arr1>arr2 Out[71]: array([[ True, False, True, True], [False, False, False, True]], dtype=bool)
5、数组索引与切片
(1)一维数组
In [73]: arr=np.arange(10) In [74]: arr Out[74]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) In [75]: arr[5] Out[75]: 5 In [76]: arr[5:8] Out[76]: array([5, 6, 7]) In [77]: arr[5:8]=12 In [78]: arr Out[78]: array([ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9])
注;python内建数组切片是对原数据的复制,成为独立的数据。而numpy array的切片是原数组的视图,任何对视图的修改都会反映到原数组中。
In [110]: arr1 Out[110]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) In [111]: arr_s=arr1[5:8] In [112]: arr_s Out[112]: array([5, 6, 7]) In [113]: arr_s[0]=123 In [114]: arr_s Out[114]: array([123, 6, 7]) In [115]: arr1 Out[115]: array([ 0, 1, 2, 3, 4, 123, 6, 7, 8, 9])
如果需要一份复制数据而不是视图的话:
In [116]: arr_c=arr1[5:8].copy()
二维数组索引:
In [121]: arr2 Out[121]: array([[1, 2, 3, 4], [5, 6, 7, 8]]) In [122]: arr2[0,1] Out[122]: 2 In [123]: arr2[0][1] Out[123]: 2
布尔值数组取反可用~;
In [144]: re Out[144]: array([ True, False, False, True, False, False, False], dtype=bool) In [145]: ~re Out[145]: array([False, True, True, False, True, True, True], dtype=bool)
和(&)与或(|)
In [150]: (re) & (~re) Out[150]: array([False, False, False, False, False, False, False], dtype=bool) In [151]: re | ~re Out[151]: array([ True, True, True, True, True, True, True], dtype=bool)