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(数组乘常数)

In [54]:arr2
Out[54]:
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
In [55]:arr2*arr2
Out[55]:
array([[ 1,  4,  9, 16],
       [25, 36, 49, 64]])
In [59]: arr2*0.5
Out[59]:
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)

 

                                           

 

posted @ 2020-02-13 16:46  SXSY  阅读(190)  评论(0编辑  收藏  举报