Numpy模块的操作

1 Ndarray的创建和属性
import numpy as np

array = np.array([[1,2,3],[2,3,4]])  ##创建2行3列的数组,默认dtype是int32
>>> print(array)
[[1 2 3]
 [2 3 4]]
>>> type(array)
<class 'numpy.ndarray'>
>>> array
array([[1, 2, 3],
       [2, 3, 4]])
>>> array.shape  ##数组的几行及列
(2, 3)
>>> array.ndim  ##数组的维数
2
>>> array.size
6
>>> array.dtype
dtype('int32')
>>>
2 常用函数
>>> a = np.zeros((3,4))  ##生成3行4列的0矩阵
>>> a
array([[ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.]])

>>> b = np.ones((2,3))  ##生成3行4列的1矩阵
>>> b
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])
>>> d = np.arange(10,20,2)
>>> d
array([10, 12, 14, 16, 18])
>>>
>>> e = np.arange(12).reshape((3,4))
>>> e
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

>>> f = np.linspace(1,10,5)   ##1到10,中间有5个元素,所以步长是2.25
>>> f
array([  1.  ,   3.25,   5.5 ,   7.75,  10.  ])
>>> a = np.random.random((2,4))
>>> a
array([[ 0.85593882,  0.78012135,  0.50869311,  0.22364149],
       [ 0.55964717,  0.14178502,  0.74792457,  0.40231654]])
>>> np.sum(a)   ###np.sum(a,axis = 1)可以使用axis=1是行,0是列
4.2200680671188735
>>> np.min(a)
0.14178501726064763
>>> np.max(a)
0.85593881805940963
>>> a = np.arange(2,14).reshape((3,4))
>>> a
array([[ 2,  3,  4,  5],
       [ 6,  7,  8,  9],
       [10, 11, 12, 13]])
>>> np.argmin(a)  ###返回最小值的索引
0
>>> np.argmax(a)
11
>>> np.argmax(a,axis = 0)
array([2, 2, 2, 2], dtype=int64)
>>> np.mean(a)  ###平均值,或者采用a.mean()
7.5
>>> a.cumsum()  ###累加值
array([ 2,  5,  9, 14, 20, 27, 35, 44, 54, 65, 77, 90], dtype=int32)
>>> np.diff(a)  ###差分
array([[1, 1, 1],
       [1, 1, 1],
       [1, 1, 1]])
>>> a.nonzero()  ##查找数组中的0值的位置
(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
>>> a.sort()  ###逐行进行排序
>>> a
array([[ 2,  3,  4,  5],
       [ 6,  7,  8,  9],
       [10, 11, 12, 13]])
>>> a.transpose()  ###a的转置
array([[ 2,  6, 10],
       [ 3,  7, 11],
       [ 4,  8, 12],
       [ 5,  9, 13]])
>>> a.clip(5,9)  ##小于5的数是5,大于9的数是9,中间的数不变
array([[5, 5, 5, 5],
       [6, 7, 8, 9],
       [9, 9, 9, 9]])

3 基本运算
>>> a = np.array([10,20,30,40])
>>> b = np.arange(4)
>>> a
array([  10, 2030,   40])
>>> b
array([0, 1, 2, 3])
>>> b>3
array([False, False, False, False], dtype=bool)
>>> c = a*b   ##数组对应元素逐个相乘
>>> c
array([  0,  20,  60, 120])
>>> d = np.dot(a,b)  ##矩阵乘法或者可以使用a.dot(b)
>>> d
200
4 矩阵的索引
>>> a
array([[ 2,  3,  4,  5],
       [ 6,  7,  8,  9],
       [10, 11, 12, 13]])
>>> a[2][0]  ##索引单个  也可以使用a[2,0]
10
>>> a[2]  ##索引第二行 或者使用a[2,:], a[:,1]表示第一列所有数
array([10, 11, 12, 13])
>>> a[2,1:3]  ##第2行的第1到3列()不包含第三列
array([11, 12])
>>> for row in a:   ###迭代每一行
 print(row)

 
[2 3 4 5]
[6 7 8 9]
[10 11 12 13]
>>> for column in a.T:   ##迭代每一列
 print(column)

 
[ 2  6 10]
[ 3  7 11]
[ 4  8 12]
[ 5  9 13]
>>> for item in a.flat:   ###遍历每一个元素
 print(item)

 
2
3
4
5
6
7
8
9
10
11
12
13

>>> col,row = a.shape
>>> for i in range(col):   ##另一种每个元素迭代的方法
  for j in range(row):
   print(a[i,j])

  
2
3
4
5
6
7
8
9
10
11
12
13

5 矩阵合并和分割
>>> a = np.array([1,1,1])
>>> b = np.array([2,2,2])
>>> np.vstack((a,b))   ###数组的上下合并
array([[1, 1, 1],
       [2, 2, 2]])
>>> np.hstack((a,b))   ##数组的左右合并
array([1, 1, 1, 2, 2, 2])
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> np.split(a,2, axis = 1)  ##将数组分割成2个数组,按照列来分割成2块
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]
>>> np.split(a,3, axis=0)  ##将数组分割成3个行数组
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]

扫描二维码关注公众号,回复: 3715504 查看本文章

>>> np.array_split(a,3, axis = 1)###不等分割
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2],
       [ 6],
       [10]]), array([[ 3],
       [ 7],
       [11]])]
>>> np.vsplit(a,3)   ###纵向分割
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
>>> np.hsplit(a,2)   ###横向分割
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]
其实还有更加简单的分割方法:直接利用索引就能分割出来
>>> b = a[0:1,:]
>>> b
array([[0, 1, 2, 3]])
>>> b
array([[0, 1, 2, 3]])
>>> b = a[1:3,:]
>>> b
array([[ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
如果是直接赋值操作,那么数组是一样的,指向一个地址,如果想深度copy的话,需要使用b = a.copy()操作,这样的话b和a就是一个全新的矩阵

猜你喜欢

转载自blog.csdn.net/stevedish_xiaojia/article/details/83050963
今日推荐