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基础

NumPy基础

NumPy基础

NumPy基础

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基础

NumPy基础

其中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基础

矩阵运算

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

NumPy基础

随机数相关

NumPy基础

NumPy基础

Original: https://blog.csdn.net/qq_59419463/article/details/123928268
Author: 一个嘣儿
Title: NumPy基础

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/760372/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球