天天看點

Numpy 常用資料結構和清理函數

  • ​​Numpy 清理工具​​
  • ​​Numpy常用資料結構​​
  • ​​Numpy常用資料清理函數​​

Numpy 清理工具

Numpy常用資料結構

  • Numpy中常用的資料結構是ndarray格式
  • 使用array函數建立,文法格式為array(清單或元組)
  • 可以使用其他函數例如arange、linspace、zeros等建立
import numpy as      
arr1 = np.array([-9, 7, 4, 3])      
arr1      
array([-9,  7,  4,  3])      
type(arr1)  # n維數組      
numpy.ndarray      
arr1 = np.array([-9, 7, 4, 3], dtype='str')      
arr1      
array(['-9', '7', '4', '3'], dtype='<U2')      
arr1 = np.array([-9, 7, 4, 3], dtype=float)      
arr1      
array([-9.,  7.,  4.,  3.])      
arr1 = np.array([-9, 7, 4, 3], dtype=int)      
arr1      
array([-9,  7,  4,  3])      
arr2 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])      
arr2      
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])      
for i in range(1, 10):
    print(i)      
1
2
3
4
5
6
7
8
9      
np.arange(1, 10, 0.5)      
array([1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5, 6. , 6.5, 7. ,
       7.5, 8. , 8.5, 9. , 9.5])      
# 等差數組
# 第一個參數:起始值
# 第二個參數:終止值
# 第三個參數:元素個數
# endpoint:是否包含終值
np.linspace(1, 10, 10, endpoint=True)      
array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])      
np.linspace(1, 10, 20, endpoint=True)      
array([ 1.        ,  1.47368421,  1.94736842,  2.42105263,  2.89473684,
        3.36842105,  3.84210526,  4.31578947,  4.78947368,  5.26315789,
        5.73684211,  6.21052632,  6.68421053,  7.15789474,  7.63157895,
        8.10526316,  8.57894737,  9.05263158,  9.52631579, 10.        ])      
9/19  # 步長      
0.47368421052631576      
1 + 3 * (9/19)      
2.4210526315789473      
# 産生一個4行5列的數組,值為0
np.zeros([4, 5])      
array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])      
np.zeros(4)      
array([0., 0., 0., 0.])      
# 産生一個2行3列的數組,值為1
np.ones([2, 3])      
array([[1., 1., 1.],
       [1., 1., 1.]])      
# 對每一個數組元素加1
arr2 + 1      
array([[ 2,  3,  4,  5],
       [ 6,  7,  8,  9],
       [10, 11, 12, 13]])      
# 判斷數組的維數
arr1.ndim      
1      
arr2.ndim      
2      
# 判斷數組的形狀
arr1.shape      
(4,)      
arr2.shape      
(3, 4)      
# 傳回數組元素個數
arr2.size      
12      
# 傳回數組元素類型
arr2.dtype      
dtype('int32')      
data2 = ((8.5, 6, 4, 1.2, 0.7), (1.5, 3, 5.4, 7.3, 9), (3.2, 4.5, 6, 3, 9), (11.2, 13.4, 15.6, 17.8, 19))      
arr3 = np.array(data2)      
arr3      
array([[ 8.5,  6. ,  4. ,  1.2,  0.7],
       [ 1.5,  3. ,  5.4,  7.3,  9. ],
       [ 3.2,  4.5,  6. ,  3. ,  9. ],
       [11.2, 13.4, 15.6, 17.8, 19. ]])      
arr3[0]      
array([8.5, 6. , 4. , 1.2, 0.7])      
arr3[3]      
array([11.2, 13.4, 15.6, 17.8, 19. ])      
# 取第二行第三列元素
arr3[1, 2]      
5.4      
arr3[1][2]      
5.4      
arr3[:, 3]      
array([ 1.2,  7.3,  3. , 17.8])      
# 取第二列到第三列元素
arr3[:, 1:3]      
array([[ 6. ,  4. ],
       [ 3. ,  5.4],
       [ 4.5,  6. ],
       [13.4, 15.6]])      
arr3[3][1]      
13.4      

Numpy常用資料清理函數

import numpy as      
s = np.array([1,2,3,4,3,2,1,2,2,4,6,7,2,4,8,4,5])      
s = np.sort(s)      
s      
array([1, 1, 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, 4, 5, 6, 7, 8])      
np.array(sorted(s, reverse=True))      
array([8, 7, 6, 5, 4, 4, 4, 4, 3, 3, 2, 2, 2, 2, 2, 1, 1])      
# 傳回排序的索引
np.argsort(s)      
array([ 0,  6, 12,  7,  5,  8,  1,  2,  4,  3, 15,  9, 13, 16, 10, 11, 14],
      dtype=int64)      
arr1 = np.array([[0,1,3],[4,2,9],[4,5,9],[1,-3,4]])      
# axis=0:表示對列排序
# axis=1:表示對行排序
np.sort(arr1, axis=0)      
array([[ 0, -3,  3],
       [ 1,  1,  4],
       [ 4,  2,  9],
       [ 4,  5,  9]])      
np.sort(arr1, axis=1)      
array([[ 0,  1,  3],
       [ 2,  4,  9],
       [ 4,  5,  9],
       [-3,  1,  4]])      
s      
array([1, 2, 3, 4, 3, 2, 1, 2, 2, 4, 6, 7, 2, 4, 8, 4, 5])      
# 第一個參數:條件
# 第二個參數:條件滿足的傳回值
# 第三個參數:條件不滿足的傳回值
# 大于3傳回元素本身,不大于3傳回-1
np.where(s>3, s, -1)      
array([-1, -1, -1,  4, -1, -1, -1, -1, -1,  4,  6,  7, -1,  4,  8,  4,  5])      
# 第一個參數:條件
# 第二個參數:傳回的值
# 篩選數組中值大于3的元素
np.extract(s > 3, s)      
array([4, 4, 6, 7, 4, 8, 4, 5])