Python数据分析系列之Numpy常用操作第四篇

147 阅读2分钟

这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战

通函数的概念:Numpy直接提供的数学函数成为通函数。例如:sum、add、cell、floor等。

In [1]: import numpy as np

In [2]: data = np.arange(1, 9)

In [3]: data
Out[3]: array([1, 2, 3, 4, 5, 6, 7, 8])

In [4]: np.sum(data)
Out[4]: 36

In [5]: data2 = np.arange(1, 9)

In [6]: data2
Out[6]: array([1, 2, 3, 4, 5, 6, 7, 8])

In [7]: np.add(data, data2)
Out[7]: array([ 2,  4,  6,  8, 10, 12, 14, 16])

In [8]: np.mean(data)
Out[8]: 4.5

In [9]: np.where(data > 5)
Out[9]: (array([5, 6, 7]),)

Numpy的一维数组也支持类似Python的列表的索引、切片和迭代遍历。

In [11]: data = np.arange(1, 10)

In [12]: data
Out[12]: array([1, 2, 3, 4, 5, 6, 7, 8, 9])

In [13]: data[2: 7]
Out[13]: array([3, 4, 5, 6, 7])

In [14]: data[::-1]
Out[14]: array([9, 8, 7, 6, 5, 4, 3, 2, 1])

In [15]: data[0] = 99

In [16]: data
Out[16]: array([99,  2,  3,  4,  5,  6,  7,  8,  9])

In [17]: for i in data:
    ...:     print(i)
    ...:
99
2
3
4
5
6
7
8
9

Numpy多维数组的访问,通过写明哪行哪列所在的轴即可。

In [18]: data = np.array([(1, 2, 3, 4), (5, 6, 7, 8), (9, 10, 11
    ...: , 12), (13, 14, 15, 16)])

In [19]: data
Out[19]:
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12],
       [13, 14, 15, 16]])

In [20]: data[0,2]
Out[20]: 3

In [21]: data[0:3, 2]
Out[21]: array([ 3,  7, 11])

In [22]: data[:, 2]
Out[22]: array([ 3,  7, 11, 15])

In [23]: data[0:2, :]
Out[23]:
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])

In [24]: data[-1, :]
Out[24]: array([13, 14, 15, 16])

In [25]: data[-1]
Out[25]: array([13, 14, 15, 16])  

In [26]: data[-1, ...]
Out[26]: array([13, 14, 15, 16])

多维数组的迭代:
对多维数组的迭代是对一个轴(行)的迭代:

In [28]: data
Out[28]:
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12],
       [13, 14, 15, 16]])
       
In [27]: for row in data:
    ...:     print(row)
    ...:
[1 2 3 4]
[5 6 7 8]
[ 9 10 11 12]
[13 14 15 16]       

如果想对所有元素进行迭代,则需要调用flat属性:

In [29]: for row in data.flat:
    ...:     print(row)
    ...:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16