NumPy基础

先贴个链接

 numpy官方函数文档

numpy函数文档民间汉化

numpy最大的特点是n维数组对象ndarray,它可以容纳各种类型数据,是最重要的操作对象

创建

以下代码使用array函数来创建ndarray对象,并展现了几个常用属性

import numpy as np
data = np.array([[2,3,7],[1,4,8]])                  #使用array函数
print(data.ndim)                                    #返回维数
print(data.shape)                                   #返回行和列数
print(data.dtype)                                   #返回数据类型

结果如下

2
(2, 3)
int32

 还有一些函数可以创建ndarray对象

import numpy as np
mat0 = np.zeros((2,3))          #全0
mat1 = np.ones((2,3))           #全1
mat_eye = np.eye(3)             #单位阵
mat_empty = np.empty((2,3))     #全为近似于0
mat_range = np.arange(6)        #序列
print('mat0\n{0}\nmat1\n{1}\nmat_eye\n{2}\nmat_empty\n{3}\nmat_arange\n{4}'.format(mat0,mat1,mat_eye,mat_empty,mat_range))

结果如下

mat0
[[0. 0. 0.]
 [0. 0. 0.]]
mat1
[[1. 1. 1.]
 [1. 1. 1.]]
mat_eye
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
mat_empty
[[5.11798224e-307 1.37961370e-306 1.24610383e-306]
 [1.78020169e-306 1.78020984e-306 8.34454050e-308]]
mat_arange
[0 1 2 3 4 5]

 索引

对数据进行普通索引时,有两种方式

import numpy as np
data = np.array([[2,3,7],[1,4,8]])
print(data[1,2])
print(data[1][2])

结果如下 

8
8

 当ndarray对象为多维数组时,可以采用多级索引,如果没有索引到最低维度,则会返回一个维度低一点的ndarray。下面建立一个2×2×3数组arr3d进行说明

import numpy as np
arr3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print(arr3d)
print('\n\n')
print(arr3d[0])

结果如下

[[[ 1  2  3]
  [ 4  5  6]]

 [[ 7  8  9]
  [10 11 12]]]

[[1 2 3]
 [4 5 6]]

 下面介绍布尔索引,通过该索引我们可以将类别和数据对应起来。

import numpy as np
lable= np.array(['a','b','c','a'])                  #分为a,b,c三类
data = np.array([[1,1,2],[2,3,4],[1,8,9],[3,7,8]])  #各分类的数据
print(data[lable == 'a'])                           #索引a类的数据

结果为

[[1 1 2]
 [3 7 8]]

变形 

对于普通转置,可以直接使用T(注意大小写敏感)

改变维度使用reshape

对于高维数组,可以使用transpose(输入所有轴编号的元组)和swapaxes(输入一对轴编号)来进行变形

import numpy as np
arr = np.arange(30).reshape((2,3,5))        #创建2*3*5数组
re3d_arr = arr.transpose((2,0,1))           '''将原排序为(0,1,2)的轴改为(2,0,1),理 
                                               解为改成5*2*3数组'''                                        
                                             
tr3d_arr = arr.swapaxes(1,2)                #将1,2两轴交换,即改成2*5*3数组
print('{0}\n{1}\n{2}'.format(arr,re3d_arr,tr3d_arr))

 [[[ 0  1  2  3  4]
  [ 5  6  7  8  9]
  [10 11 12 13 14]]

 [[15 16 17 18 19]
  [20 21 22 23 24]
  [25 26 27 28 29]]]


[[[ 0  5 10]
  [15 20 25]]

 [[ 1  6 11]
  [16 21 26]]

 [[ 2  7 12]
  [17 22 27]]

 [[ 3  8 13]
  [18 23 28]]

 [[ 4  9 14]
  [19 24 29]]]


[[[ 0  5 10]
  [ 1  6 11]
  [ 2  7 12]
  [ 3  8 13]
  [ 4  9 14]]

 [[15 20 25]
  [16 21 26]
  [17 22 27]
  [18 23 28]
  [19 24 29]]]

 运算函数

贴点图吧,都挺好理解的,直接调用就行

需要注意的是,这些函数都是按照标量的规则进行运算,近似相当于matlab中的加点运算,而不是进行矩阵运算。

NumPy基础_第1张图片

NumPy基础_第2张图片

NumPy基础_第3张图片

NumPy基础_第4张图片

 where函数

resul = np.where(condition,xarray,yarray)

实现当满足condition时,选取xarray的值,否则选取yarray的值的功能,以下例子实现了保留正数,将非负数置0的功能

import numpy as np
arr = np.arange(-5,7,1).reshape((3,4))
result = np.where(arr>0,arr,0)
print(arr)
print(result)

[[-5 -4 -3 -2]
 [-1  0  1  2]
 [ 3  4  5  6]]


[[0 0 0 0]
 [0 0 1 2]
 [3 4 5 6]]

 基本统计函数

NumPy基础_第5张图片

NumPy基础_第6张图片

 其中mean、sum等函数可以输入一个axis选项参数,用于该轴向上的值,比如np.mean(0)为每列的平均值

import numpy as np
arr = np.arange(-5,5,1).reshape((2,5))
print(arr)
print(arr.mean(0))
print(arr.mean(1))

 [[-5 -4 -3 -2 -1]
 [ 0  1  2  3  4]]


[-2.5 -1.5 -0.5  0.5  1.5]


[-3.  2.]

 排序

直接调用np.sort,同样也可以添加参数来针对某一轴向来进行排序

集合运算

NumPy基础_第7张图片

 矩阵运算

numpy.linalg中有一组标准的矩阵运算

NumPy基础_第8张图片

随机数相关

NumPy基础_第9张图片

NumPy基础_第10张图片

你可能感兴趣的:(python)