来聊聊11种Numpy的高级操作!

x33g5p2x  于2022-05-11 转载在 其他  
字(12.1k)|赞(0)|评价(0)|浏览(714)

来源: CSDN-逐梦er

转自:Python大数据分析

一.数组上的迭代

NumPy 包含一个迭代器对象numpy.nditer。它是一个有效的多维迭代器对象,可以用于在数组上进行迭代。数组的每个元素可使用 Python 的标准Iterator接口来访问。

  1. import numpy as np
  2. a = np.arange(0, 60, 5)
  3. a = a.reshape(3, 4)
  4. print(a)
  5. for x in np.nditer(a):
  6.     print(x)
  1. [[ 0 5 10 15]
  2. [20 25 30 35]
  3. [40 45 50 55]]
  4. 0
  5. 5
  6. 10
  7. 15
  8. 20
  9. 25
  10. 30
  11. 35
  12. 40
  13. 45
  14. 50
  15. 55

如果两个数组是可广播的,nditer组合对象能够同时迭代它们。假设数 组a具有维度 3X4,并且存在维度为 1X4 的另一个数组b,则使用以下类型的迭代器(数组b被广播到a的大小)。

  1. import numpy as np
  2. a = np.arange(0, 60, 5)
  3. a = a.reshape(3, 4)
  4. print(a)
  5. b = np.array([1, 2, 3, 4], dtype=int)
  6. print(b)
  7. for x, y in np.nditer([a, b]):
  8.     print(x, y)
  1. [[ 0 5 10 15]
  2. [20 25 30 35]
  3. [40 45 50 55]]
  4. [1 2 3 4]
  5. 0 1
  6. 5 2
  7. 10 3
  8. 15 4
  9. 20 1
  10. 25 2
  11. 30 3
  12. 35 4
  13. 40 1
  14. 45 2
  15. 50 3
  16. 55 4

二.数组形状修改函数

1.ndarray.reshape

函数在不改变数据的条件下修改形状,参数如下:

ndarray.reshape(arr, newshape, order)

其中:

  1. import numpy as np
  2. a = np.arange(8)
  3. print(a)
  4. b = a.reshape(4, 2)
  5. print(b)

2.ndarray.flat

函数返回数组上的一维迭代器,行为类似 Python 内建的迭代器。

  1. import numpy as np
  2. a = np.arange(0, 16, 2).reshape(2, 4)
  3. print(a)
  4. # 返回展开数组中的下标的对应元素
  5. print(list(a.flat))
  1. [[ 0 2 4 6]
  2. [ 8 10 12 14]]
  3. [0, 2, 4, 6, 8, 10, 12, 14]

3.ndarray.flatten

函数返回折叠为一维的数组副本,函数接受下列参数:

ndarray.flatten(order)其中:order:‘C’ — 按行,‘F’ — 按列,‘A’ — 原顺序,‘k’ —元素在内存中的出现顺序。

  1. import numpy as np
  2. a = np.arange(8).reshape(2, 4)
  3. print(a)
  4. # default is column-major
  5. print(a.flatten())
  6. print(a.flatten(order='F'))
  1. [[0 1 2 3]
  2. [4 5 6 7]]
  3. [0 1 2 3 4 5 6 7]
  4. [0 4 1 5 2 6 3 7]

三.数组翻转操作函数

1.numpy.transpose

函数翻转给定数组的维度。如果可能的话它会返回一个视图。函数接受下列参数:

numpy.transpose(arr, axes)

其中:

  1. arr:要转置的数组
  2. axes:整数的列表,对应维度,通常所有维度都会翻转。
  1. import numpy as np
  2. a = np.arange(24).reshape(2, 3, 4)
  3. print(a)
  4. b = np.array(np.transpose(a))
  5. print(b)
  6. print(b.shape)
  1. [[[ 0 1 2 3]
  2. [ 4 5 6 7]
  3. [ 8 9 10 11]]
  4. [[12 13 14 15]
  5. [16 17 18 19]
  6. [20 21 22 23]]]
  7. [[[ 0 12]
  8. [ 4 16]
  9. [ 8 20]]
  10. [[ 1 13]
  11. [ 5 17]
  12. [ 9 21]]
  13. [[ 2 14]
  14. [ 6 18]
  15. [10 22]]
  16. [[ 3 15]
  17. [ 7 19]
  18. [11 23]]]
  19. (4, 3, 2)
  1. b = np.array(np.transpose(a, (1, 0, 2)))
  2. print(b)
  3. print(b.shape
  1. [[[ 0 1 2 3]
  2. [12 13 14 15]]
  3. [[ 4 5 6 7]
  4. [16 17 18 19]]
  5. [[ 8 9 10 11]
  6. [20 21 22 23]]]
  7. (3, 2, 4)

2. numpy.ndarray.T

该函数属于ndarray类,行为类似于numpy.transpose.

  1. import numpy as np
  2. a = np.arange(12).reshape(3, 4)
  3. print(a)
  4. print(a.T)
  1. [[ 0 1 2 3]
  2. [ 4 5 6 7]
  3. [ 8 9 10 11]]
  4. [[ 0 4 8]
  5. [ 1 5 9]
  6. [ 2 6 10]
  7. [ 3 7 11]]

3.numpy.swapaxes

函数交换数组的两个轴。这个函数接受下列参数:

– numpy.swapaxes(arr, axis1, axis2)

– 参数:

  1. arr:要交换其轴的输入数组
  2. axis1:对应第一个轴的整数
  3. axis2:对应第二个轴的整数
  1. import numpy as np
  2. a = np.arange(8).reshape(2, 2, 2)
  3. print(a)
  4. print(np.swapaxes(a, 2, 0))
  1. [[[0 1]
  2. [2 3]]
  3. [[4 5]
  4. [6 7]]]
  5. [[[0 4]
  6. [2 6]]
  7. [[1 5]
  8. [3 7]]]

4.numpy.rollaxis

s 函数向后滚动特定的轴,直到一个特定位置。这个函数

接受三个参数:

– numpy.rollaxis(arr, axis, start)

– 其中:

  1. arr:输入数组
  2. axis:要向后滚动的轴,其它轴的相对位置不会改变
  3. start:默认为零,表示完整的滚动。会滚动到特定位置。
  1. import numpy as np
  2. a = np.arange(8).reshape(2,2,2)
  3. print(a)
  4. print(np.rollaxis(a,2))
  5. print(np.rollaxis(a,2,1))
  1. [[[0 1]
  2. [2 3]]
  3. [[4 5]
  4. [6 7]]]
  5. [[[0 2]
  6. [4 6]]
  7. [[1 3]
  8. [5 7]]]
  9. [[[0 2]
  10. [1 3]]
  11. [[4 6]
  12.   [5 7]]]

四.数组修改维度函数

1.numpy.broadcast_to

函数将数组广播到新形状。它在原始数组上返回只 读视图。它通常不连续。如果新形状不符合 NumPy 的广播规则,该函数可能会抛出ValueError。该函数接受以下参数:

– numpy.broadcast_to(array, shape, subok)

  1. import numpy as np
  2. a = np.arange(4).reshape(1,4)
  3. print(a)
  4. print(np.broadcast_to(a,(4,4)))
  1. [[0 1 2 3]]
  2. [[0 1 2 3]
  3. [0 1 2 3]
  4. [0 1 2 3]
  5.  [0 1 2 3]]

2.numpy.expand_dims

函数通过在指定位置插入新的轴来扩展数组形状。该函数需要两个参数:

– numpy.expand_dims(arr, axis)

– 其中:

  1. arr:输入数组
  2. axis:新轴插入的位置
  1. import numpy as np
  2. x = np.array(([1, 2], [3, 4]))
  3. print(x)
  4. y = np.expand_dims(x, axis=0)
  5. print(y)
  6. print(x.shape, y.shape)
  7. y = np.expand_dims(x, axis=1)
  8. print(y)
  9. print(x.ndim, y.ndim)
  10. print(x.shape, y.shape)
  1. [[1 2]
  2. [3 4]]
  3. [[[1 2]
  4. [3 4]]]
  5. (2, 2) (1, 2, 2)
  6. [[[1 2]]
  7. [[3 4]]]
  8. 2 3
  9. (2, 2) (2, 1, 2)

3.numpy.squeeze

函数从给定数组的形状中删除一维条目。此函数需要两 个参数。

– numpy.squeeze(arr, axis)

– 其中:

  1. arr:输入数组
  2. axis:整数或整数元组,用于选择形状中单一维度条目的子集
  1. import numpy as np
  2. x = np.arange(9).reshape(1, 3, 3)
  3. print(x)
  4. y = np.squeeze(x)
  5. print(y)
  6. print(x.shape, y.shape)
  1. [[[0 1 2]
  2. [3 4 5]
  3. [6 7 8]]]
  4. [[0 1 2]
  5. [3 4 5]
  6. [6 7 8]]
  7. (1, 3, 3) (3, 3)

五.数组的连接操作

NumPy中数组的连接函数主要有如下四个:

  1. concatenate 沿着现存的轴连接数据序列
  2. stack 沿着新轴连接数组序列
  3. hstack 水平堆叠序列中的数组(列方向)
  4. vstack 竖直堆叠序列中的数组(行方向)

1.numpy.stack

函数沿新轴连接数组序列,需要提供以下参数:

– numpy.stack(arrays, axis)

– 其中:

  1. arrays:相同形状的数组序列
  2. axis:返回数组中的轴,输入数组沿着它来堆叠
  1. import numpy as np
  2. a = np.array([[1,2],[3,4]])
  3. print(a)
  4. b = np.array([[5,6],[7,8]])
  5. print(b)
  6. print(np.stack((a,b),0))
  7. print(np.stack((a,b),1))
  1. [[1 2]
  2. [3 4]]
  3. [[5 6]
  4. [7 8]]
  5. [[[1 2]
  6. [3 4]]
  7. [[5 6]
  8. [7 8]]]
  9. [[[1 2]
  10. [5 6]]
  11. [[3 4]
  12.   [7 8]]]

2.numpy.hstack

是numpy.stack函数的变体,通过堆叠来生成水平的单个数组。

  1. import numpy as np
  2. a = np.array([[1, 2], [3, 4]])
  3. print(a)
  4. b = np.array([[5, 6], [7, 8]])
  5. print(b)
  6. print('水平堆叠:')
  7. c = np.hstack((a, b))
  8. print(c)
  1. [[1 2]
  2. [3 4]]
  3. [[5 6]
  4. [7 8]]
  5. 水平堆叠:
  6. [[1 2 5 6]
  7.  [3 4 7 8]]

3.numpy.vstack

是numpy.stack函数的变体,通过堆叠来生成竖直的单个数组。

  1. import numpy as np
  2. a = np.array([[1, 2], [3, 4]])
  3. print(a)
  4. b = np.array([[5, 6], [7, 8]])
  5. print(b)
  6. print('竖直堆叠:')
  7. c = np.vstack((a, b))
  8. print(c)
  1. [[1 2]
  2. [3 4]]
  3. [[5 6]
  4. [7 8]]
  5. 竖直堆叠:
  6. [[1 2]
  7. [3 4]
  8. [5 6]
  9. [7 8]]

4.numpy.concatenate

函数用于沿指定轴连接相同形状的两个或多个数组。

该函数接受以下参数。

– numpy.concatenate((a1, a2, …), axis)

– 其中:

  1. a1, a2, ...:相同类型的数组序列
  2. axis:沿着它连接数组的轴,默认为 0
  1. import numpy as np
  2. a = np.array([[1,2],[3,4]])
  3. print(a)
  4. b = np.array([[5,6],[7,8]])
  5. print(b)
  6. print(np.concatenate((a,b)))
  7. print(np.concatenate((a,b),axis = 1))
  1. [[1 2]
  2. [3 4]]
  3. [[5 6]
  4. [7 8]]
  5. [[1 2]
  6. [3 4]
  7. [5 6]
  8. [7 8]]
  9. [[1 2 5 6]
  10. [3 4 7 8]]

六.数组的分割操作

NumPy中数组的数组分割函数主要如下:

  1. split 将一个数组分割为多个子数组
  2.  hsplit 将一个数组水平分割为多个子数组(按列) 
  3.  vsplit 将一个数组竖直分割为多个子数组(按行)

1.numpy.split

该函数沿特定的轴将数组分割为子数组。函数接受三个参数:

– numpy.split(ary, indices_or_sections, axis)

  1. ary:被分割的输入数组
  2. indices_or_sections:可以是整数,表明要从输入数组创建的,等大小的子数组的数量。如果此参数是一维数组,则其元素表明要创建新子数组的点。
  3. axis:默认为 0
  1. import numpy as np
  2. a = np.arange(9)
  3. print(a)
  4. print('将数组分为三个大小相等的子数组:')
  5. b = np.split(a,3)
  6. print(b)
  7. print('将数组在一维数组中表明的位置分割:')
  8. b = np.split(a,[4,7])
  9. print(b)

2.numpy.hsplit

split()函数的特例,其中轴为 1 表示水平分割。

  1. import numpy as np
  2. a = np.arange(16).reshape(4,4)
  3. print(a)
  4. print('水平分割:')
  5. b = np.hsplit(a,2)
  6. print(b)
  1. [[ 0 1 2 3]
  2. [ 4 5 6 7]
  3. [ 8 9 10 11]
  4. [12 13 14 15]]
  5. 水平分割:
  6. [array([[ 0, 1],
  7. [ 4, 5],
  8. [ 8, 9],
  9. [12, 13]]), array([[ 2, 3],
  10. [ 6, 7],
  11. [10, 11],
  12. [14, 15]])]

3.numpy.vsplit

split()函数的特例,其中轴为 0 表示竖直分割,无论输入数组的维度是什么。

  1. import numpy as np
  2. a = np.arange(16).reshape(4,4)
  3. print(a)
  4. print('竖直分割:')
  5. b = np.vsplit(a,2)
  6. print(b)
  1. [[ 0 1 2 3]
  2. [ 4 5 6 7]
  3. [ 8 9 10 11]
  4. [12 13 14 15]]
  5. 竖直分割:
  6. [array([[0, 1, 2, 3],
  7. [4, 5, 6, 7]]), array([[ 8, 9, 10, 11],
  8.        [12, 13, 14, 15]])]

七.数组元素操作

NumPy中数组操作函数主要如下:

  1. resize 返回指定形状的新数组
  2. append 将值添加到数组末尾
  3. insert 沿指定轴将值插入到指定下标之前
  4. delete 返回删掉某个轴的子数组的新数组
  5. unique 寻找数组内的唯一元素

1.numpy.resize

函数返回指定大小的新数组。如果新大小大于原始大小,则包含原始数组中的元素的重复副本。如果小于则去掉原始数组的部分数据。该函数接受以下参数:

– numpy.resize(arr, shape)

– 其中:

  1. arr:要修改大小的输入数组
  2. shape:返回数组的新形状
  1. import numpy as np
  2. a = np.array([[1,2,3],[4,5,6]])
  3. print(a)
  4. print(a.shape)
  5. b = np.resize(a, (3,2))
  6. print(b)
  7. print(b.shape)
  8. print('修改第二个数组的大小:')
  9. b = np.resize(a,(3,3))
  10. print(b)
  11. print('修改第三个数组的大小:')
  12. b = np.resize(a,(2,2))
  13. print(b)
  1. [[1 2 3]
  2. [4 5 6]]
  3. (2, 3)
  4. [[1 2]
  5. [3 4]
  6. [5 6]]
  7. (3, 2)
  8. 修改第二个数组的大小:
  9. [[1 2 3]
  10. [4 5 6]
  11. [1 2 3]]
  12. 修改第三个数组的大小:
  13. [[1 2]
  14.  [3 4]]

2.numpy.append

函数在输入数组的末尾添加值。附加操作不是原地的,而是分配新的数组。此外,输入数组的维度必须匹配否则将生成ValueError。函数接受下列函数:

– numpy.append(arr, values, axis)

– 其中:

  1. arr:输入数组
  2.  values:要向arr添加的值,比如和arr形状相同(除了要添加的轴) 
  3. axis:沿着它完成操作的轴。如果没有提供,两个参数都会被展开。
  1. import numpy as np
  2. a = np.array([[1,2,3],[4,5,6]])
  3. print(a)
  4. print(np.append(a, [[7,8,9]],axis = 0))
  5. print(np.append(a, [[5,5,5],[7,8,9]],axis = 1))
  1. [[1 2 3]
  2. [4 5 6]]
  3. [[1 2 3]
  4. [4 5 6]
  5. [7 8 9]]
  6. [[1 2 3 5 5 5]
  7.  [4 5 6 7 8 9]]

3.numpy.insert

函数在给定索引之前,沿给定轴在输入数组中插入值。如果值的类型转换为要插入,则它与输入数组不同。插入没有原地的,函数会返回一个新数组。此外,如果未提供轴,则输入数组会被展开。

insert()函数接受以下参数:

– numpy.insert(arr, obj, values, axis)

  1. arr:输入数组
  2. obj:在其之前插入值的索引
  3.  values:要插入的值
  4. axis:沿着它插入的轴
  1. import numpy as np
  2. a = np.array([[1,2],[3,4],[5,6]])
  3. print(a)
  4. print(np.insert(a,3,[11,12]))
  5. print(np.insert(a,1,[11],axis = 0))
  6. print(np.insert(a,1,[11],axis = 1))
  1. [[1 2]
  2. [3 4]
  3. [5 6]]
  4. [ 1 2 3 11 12 4 5 6]
  5. [[ 1 2]
  6. [11 11]
  7. [ 3 4]
  8. [ 5 6]]
  9. [[ 1 11 2]
  10. [ 3 11 4]
  11.  [ 5 11  6]]

4.numpy.delete

函数返回从输入数组中删除指定子数组的新数组。与insert()函数的情况一样,如果未提供轴参数,则输入数组将展开。该函 数接受以下参数:

– Numpy.delete(arr, obj, axis)

  1. arr:输入数组
  2. obj:可以被切片,整数或者整数数组,表明要从输入数组删除的子数组
  3. axis:沿着它删除给定子数组的轴
  1. import numpy as np
  2. a = np.array([[1,2],[3,4],[5,6]])
  3. print(a)
  4. print(np.delete(a,5))
  5. print(np.delete(a,1,axis = 1))
  1. [[1 2]
  2. [3 4]
  3. [5 6]]
  4. [1 2 3 4 5]
  5. [[1]
  6. [3]
  7.  [5]]

5.numpy.unique

函数返回输入数组中的去重元素数组。该函数能够返回一个元组,包含去重数组和相关索引的数组。索引的性质取决于函数调用中返回参数的类型。

– numpy.unique(arr, return_index, return_inverse, return_counts)

  1. arr:输入数组,如果不是一维数组则会展开
  2. return_index:如果为true,返回输入数组中的元素下标
  3. return_inverse:如果为true,返回去重数组的下标,它可以用于重构输入数组
  4. return_counts:如果为true,返回去重数组中的元素在原数组中的出现次数
  1. import numpy as np
  2. a = np.array([5,2,6,2,7,5,6,8,2,9])
  3. u = np.unique(a)
  4. print(u)
  5. u,indices = np.unique(a, return_index = True)
  6. print(u, indices)
  7. u,indices = np.unique(a,return_inverse = True)
  8. print(u, indices)
  9. u,indices = np.unique(a,return_counts = True)
  10. print(u, indices)
  1. [2 5 6 7 8 9]
  2. [2 5 6 7 8 9] [1 0 2 4 7 9]
  3. [2 5 6 7 8 9] [1 0 2 0 3 1 2 4 0 5]
  4. [2 5 6 7 8 9] [3 2 2 1 1 1]

八.NumPy - 字符串函数

以下函数用于对dtype为numpy.string_或numpy.unicode_的数组执行向量 化字符串操作。它们基于 Python 内置库中的标准字符串函数。字符数组类(numpy.char)中定义

  1. import numpy as np
  2. print(np.char.add(['hello'],[' xyz']))
  3. print(np.char.add(['hello', 'hi'],[' abc', ' xyz']))
  4. print(np.char.multiply('Hello ',3))
  5. print(np.char.center('hello', 20,fillchar = '*'))
  6. print(np.char.capitalize('hello world'))
  7. print(np.char.title('hello how are you?'))
  8. print(np.char.lower(['HELLO','WORLD']))
  9. print(np.char.lower('HELLO'))
  10. print(np.char.upper('hello'))
  11. print(np.char.upper(['hello','world']))
  12. print(np.char.split ('hello how are you?'))
  13. print(np.char.split ('YiibaiPoint,Hyderabad,Telangana', sep = ','))
  14. print(np.char.splitlines('hello\nhow are you?'))
  15. print(np.char.splitlines('hello\rhow are you?'))
  16. print(np.char.strip('ashok arora','a'))
  17. print(np.char.strip(['arora','admin','java'],'a'))
  18. print(np.char.join(':','dmy'))
  19. print(np.char.join([':','-'],['dmy','ymd']))
  20. print(np.char.replace ('He is a good boy', 'is', 'was'))
  21. a = np.char.encode('hello', 'cp500')
  22. print(a)
  23. print(np.char.decode(a,'cp500'))
  1. ['hello xyz']
  2. ['hello abc' 'hi xyz']
  3. Hello Hello Hello
  4. *******hello********
  5. Hello world
  6. Hello How Are You?
  7. ['hello' 'world']
  8. hello
  9. HELLO
  10. ['HELLO' 'WORLD']
  11. ['hello', 'how', 'are', 'you?']
  12. ['YiibaiPoint', 'Hyderabad', 'Telangana']
  13. ['hello', 'how are you?']
  14. ['hello', 'how are you?']
  15. shok aror
  16. ['ror' 'dmin' 'jav']
  17. d:m:y
  18. ['d:m:y' 'y-m-d']
  19. He was a good boy
  20. b'\x88\x85\x93\x93\x96'
  21. hello

九.NumPy - 算数函数

NumPy 包含大量的各种数学运算功能。NumPy 提供标准的三角函数,算术运算的函数,复数处理函数等。

  1. 三角函数
  2. 舍入函数
  3.  算数函数

1. NumPy -三角函数

NumPy 拥有标准的三角函数,它为弧度制单位的给定角度返回三角函
数比值。arcsin,arccos,和arctan函数返回给定角度的sin,cos和tan的反
三角函数。这些函数的结果可以通过numpy.degrees()函数通过将弧度制 转换为角度制来验证。

  1. import numpy as np
  2. a = np.array([0,30,45,60,90])
  3. # 通过乘 pi/180 转化为弧度
  4. print(np.sin(a*np.pi/180))
  5. print(np.cos(a*np.pi/180))
  6. print(np.tan(a*np.pi/180))
  1. [ 0. 0.5 0.70710678 0.8660254 1. ]
  2. [ 1.00000000e+00 8.66025404e-01 7.07106781e-01 5.00000000e-01
  3. 6.12323400e-17]
  4. [ 0.00000000e+00 5.77350269e-01 1.00000000e+00 1.73205081e+00
  5.    1.63312394e+16]

2.NumPy -舍入函数

• numpy.around()这个函数返回四舍五入到所需精度的值

  1. numpy.around(a,decimals) a 输入数组
  2.  decimals 要舍入的小数位数。 默认值为0 如果为负,整数将四舍五入到小数点左侧的位置

• numpy.floor() 函数返回不大于输入参数的最大整数。

• numpy.ceil() 函数返回输入值的上限,大于输入参数的最小整数。

  1. import numpy as np
  2. a = np.array([1.0, 5.55, 123, 0.567, 25.532])
  3. print(np.around(a))
  4. print(np.around(a, decimals=1))
  5. print(np.floor(a))
  6. print(np.ceil(a))
  1. [ 1. 6. 123. 1. 26.]
  2. [ 1. 5.6 123. 0.6 25.5]
  3. [ 1. 5. 123. 0. 25.]
  4. [   1.    6.  123.    1.   26.]

3.NumPy - 算数运算

用于执行算术运算(如add(),subtract(),multiply()和divide())的输入数组必须具有相同的形状或符合数组广播规则。

  1. numpy.reciprocal() 函数返回参数逐元素的倒数。
  2. numpy.power() 函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。
  3.  numpy.mod() 函数返回输入数组中相应元素的除法余数。
  1. import numpy as np
  2. a = np.array([0.25, 2, 1, 0.2, 100])
  3. print(np.reciprocal(a))
  4. print(np.power(a,2))
  5. a = np.array([10,20,30])
  6. b = np.array([3,5,7])
  7. print(np.mod(a,b))
  1. [ 4. 0.5 1. 5. 0.01]
  2. [ 6.25000000e-02 4.00000000e+00 1.00000000e+00 4.00000000e-02
  3. 1.00000000e+04]
  4. [1 0 2]

4.NumPy - 统计函数

NumPy 有很多有用的统计函数,用于从数组中给定的元素中查找最小,最大,百分标准差和方差等。

  1. numpy.amin() , numpy.amax() 从给定数组中的元素沿指定轴返回最小值和最大值。
  2. numpy.ptp() 函数返回沿轴的值的范围(最大值 - 最小值)。
  3. numpy.percentile() 表示小于这个值得观察值占某个百分比
  4. numpy.percentile(a, q, axis)
  5. a 输入数组;q 要计算的百分位数,在 0 ~ 100 之间;axis 沿着它计算百分位数的轴
  6. numpy.median() 返回数据样本的中位数。
  7. numpy.mean() 沿轴返回数组中元素的算术平均值。
  8.  numpy.average() 返回由每个分量乘以反映其重要性的因子得到的加权平均值
  1. import numpy as np
  2. a = np.array([[3,7,5],[8,4,3],[2,4,9]])
  3. print(np.amin(a,1))
  4. print(np.amax(a,1))
  5. print(np.ptp(a))
  6. print(np.percentile(a,50))
  7. print(np.median(a))
  8. print(np.mean(a))
  9. print(np.average(a))
  10. print(np.std([1,2,3,4])) #返回数组标准差
  11. print(np.var([1,2,3,4])) #返回数组方差
  1. [3 3 2]
  2. [7 8 9]
  3. 7
  4. 4.0
  5. 4.0
  6. 5.0
  7. 5.0
  8. 1.11803398875
  9. 1.25

十.NumPy排序、搜索和计数函数

NumPy中提供了各种排序相关功能。

  1. numpy.sort函数返回输入数组的排序副本。numpy.sort(a, axis, kind, order)
  2. a 要排序的数组;
  3. axis 沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序; kind 默认为'quicksort'(快速排序);
  4. order 如果数组包含字段,则是要排序的字段
  5. numpy.argsort() 函数对输入数组沿给定轴执行间接排序,并使用指定排序类型返回数据的索引数组。这个索引数组用于构造排序后的数组。
  6. numpy.lexsort()函数使用键序列执行间接排序。键可以看作是电子表格中的一列。该函数返回一个索引数组,使用它可以获得排序数据。注意,最后一个键恰好是 sort 的主键。
  7. numpy.argmax() numpy.argmin()这两个函数分别沿给定轴返回最大和最小元素的索引。
  8. numpy.nonzero() 函数返回输入数组中非零元素的索引。
  9. numpy.where() 函数返回输入数组中满足给定条件的元素的索引。
  10. numpy.extract() 函数返回满足任何条件的元素。
  1. import numpy as np
  2. a = np.array([[3, 7, 3, 1], [9, 7, 8, 7]])
  3. print(np.sort(a))
  4. print(np.argsort(a))
  5. print(np.argmax(a))
  6. print(np.argmin(a))
  7. print(np.nonzero(a))
  8. print(np.where(a > 3))
  9. nm = ('raju', 'anil', 'ravi', 'amar')
  10. dv = ('f.y.', 's.y.', 's.y.', 'f.y.')
  11. print(np.lexsort((dv, nm)))
  1. [[1 3 3 7]
  2. [7 7 8 9]]
  3. [[3 0 2 1]
  4. [1 3 2 0]]
  5. 4
  6. 3
  7. (array([0, 0, 0, 0, 1, 1, 1, 1], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
  8. (array([0, 1, 1, 1, 1], dtype=int64), array([1, 0, 1, 2, 3], dtype=int64))
  9. [3 1 0 2]

十一.NumPy IO文件操作

ndarray对象可以保存到磁盘文件并从磁盘文件加载。可用的 IO 功能有:

  1. numpy.save() 文件将输入数组存储在具有npy扩展名的磁盘文件中。
  2. numpy.load() npy文件中重建数组。
  3.  numpy.savetxt()和numpy.loadtxt() 函数以简单文本文件格式存储和获取数组数据。
  1. import numpy as np
  2. a = np.array([1,2,3,4,5])
  3. np.save('outfile',a)
  4. b = np.load('outfile.npy')
  5. print(b)
  6. a = np.array([1,2,3,4,5])
  7. np.savetxt('out.txt',a)
  8. b = np.loadtxt('out.txt')
  9. print(b)
  1. [1 2 3 4 5]
  2. [ 1.  2.  3.  4.  5.]

END -

相关文章