2025年3月30日 星期日 甲辰(龙)年 月廿九 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

numpy的一些函数运用

时间:11-11来源:作者:点击数:59

文章目录

1.argmax()函数

语法格式:

numpy.argmax(a,axis)

作用:返回axis轴方向最大值的索引

a :为所需处理的矩阵

axis :为处理的轴向,axis=1为横轴方向,方向从左到右;axis=0为纵轴方向,方向从上到下

一维数组:

  • >>> a=np.array([1,2,3,4,5])
  • >>> print(np.argmax(a))
  • 4

二维数组:

  • >>> b=np.array([[1,0,6,4],[9,8,2,3],[3,1,2,7]])
  • >>> print(np.argmax(b,axis=0))
  • [1 1 0 2]
  • >>> print(np.argmax(b,axis=1))
  • [2 0 3]
2.numpy.random.choice()

用法:需要引用numpy

numpy.random.choice(a, size=None, replace=True, p=None)

  • import numpy as np
  • numpy.random.choice(a, size=None, replace=True, p=None)

**用途:**从a(一维数据)中随机抽取数字,返回指定大小(size)的数组

**replace:**True表示可以取相同数字,False表示不可以取相同数字

数组p:与数组a相对应,表示取数组a中每个元素的概率,默认为选取每个元素的概率相同。

  • import numpy as np
  • pa = [0.3, 0.2, 0.1, 0.1, 0.3]
  • pa=np.array(pa)
  • a = np.random.choice(np.arange(5), size=5, replace=True, p=pa)
  • print(a) #[3 4 1 3 0]
3.shape[0]

在深度学习代码中遇到的问题-shape[0]、shape[1]、shape[2]的区别

对于图像来说:

​ img.shape[0]:图像的垂直尺寸(高度)

​ img.shape[1]:图像的水平尺寸(宽度)

​ img.shape[2]:图像的通道数

举例来说,下面是一张300X534X3的图像,

  • import matplotlib.image as mpimg # mpimg 用于读取图片
  • if __name__ == '__main__':
  • img = mpimg.imread('cat.jpg') # 读取和代码处于同一目录下的 img.png
  • # 此时 img 就已经是一个 np.array 了,可以对它进行任意处理
  • print(img.shape) #(300, 534, 3)
  • print(img.shape[0])
  • print(img.shape[1])
  • print(img.shape[2])
  • (300, 534, 3)
  • 300
  • 534
  • 3

而对于矩阵来说:

  • shape[0]:表示矩阵的行数
  • shape[1]:表示矩阵的列数

举例如下:

  • import numpy as np
  • if __name__ == '__main__':
  • w = np.array([[1, 2, 3], [4, 5, 6]]) # 2X3的矩阵
  • print(w.shape)
  • print(w.shape[0])
  • print(w.shape[1])
  • (2, 3)
  • 2
  • 3

运行结果如下:

由此证明,上述结果是没有问题的。

4.ndim

ndim表示数组的维度,很明显,a是一个1行三列的数组,即1×3,在维度中,1是可以忽略的,即1x1x2的数组跟1×2的数组是一样的,所以,a是一维数组。

再来看b,b是一个2行3列的数组,也就是2×3,这是二维,没错。

再看c, c是一个3行3列的数组, 即3×3, 3×3依旧是二维哦,4×3, 5×4都是二维

到d的时候,我们发现d是一个2行3列但高为4的数组, 即2x3x4,这是3维数组。

a

array([ 1., 2., 3.])

b

array([[ 1.5, 2. , 3. ],

[ 4. , 5. , 6. ]])

c

array([[ 0., 0., 0., 0.],

[ 0., 0., 0., 0.],

[ 0., 0., 0., 0.]])

a.ndim

1

b.ndim

2

c.ndim

2

 
5、axis=0

实例

一维数组

  • # axis=0
  • #第一步:axis=0对应最外层[],其内最大单位块为:1,2,3,并去掉[]
  • #第二步:单位块是数值,直接计算:1+2+3=6
  • >>> import numpy as np
  • >>> arr = np.array([1, 2, 3])
  • >>> arr.sum(axis = 0)
  • 6
  • #axis=1 即:N维数组,最大能使用axis=N-1
  • >>> arr = np.array([1, 2, 3])
  • >>> arr.sum(axis = 1) # 越界使用,报错

二维数组

  • #axis=0
  • #第一步:axis=0对应最外层[],其内最大单位块为:[1,2] 和 [3,4],并去掉最外层[]
  • #第二步:单位块是数组,两者对应下标元素进行计算,即:[1+3,2+4]=[4,6]
  • >>> arr = np.array([[1, 2], [3, 4]])
  • >>> arr.sum(axis = 0)
  • array([4, 6])
  • #axis=1
  • #第一步:axis=1对应第二层[],其内最大单位块为:第一[]内: 1,2;第二[]内: 3,4,并去掉第二层[]
  • #第二步:单位块是数值,直接进行计算,即:[1+2,3+4]=[3,7]
  • >>> arr = np.array([[1, 2], [5, 6]])
  • >>> arr.sum(axis = 1)
  • array([3, 11]

三维数组

  • >>> arr = np.array([[[1, 2],[3, 4]], [[5, 6],[7, 8]]])
  • >>> arr
  • array([[[1, 2],
  • [3, 4]],
  • [[5, 6],
  • [7, 8]]])
  • >>> arr.sum(axis=0)
  • array([[ 6, 8],
  • [10, 12]])
  • >>> arr = np.array([[[1, 2],[3, 4]], [[5, 6],[7, 8]]])
  • >>> arr.sum(axis=1)
  • array([[ 4, 6],
  • [12, 14]])
  • >>> arr = np.array([[[1, 2],[3, 4]], [[5, 6],[7, 8]]])
  • >>> arr.sum(axis=2)
  • array([[ 3, 7],
  • [11, 15]])
  • 第一步:axis=1对应第三层[],其内最大单位块为:第一个[]:12;第二个[]:34;第三个[]:56;第四个[]:78,并去掉第三层[]
  • 第二步:单位块是数值,直接进行计算,即:[[1+2,3+4],[5+6,7+8]] = [[3,7],[11,15]]

Python的numpy中axis=0、axis=1、axis=2解释

numpy数组中:

  • 一维数组拥有一个轴:axis=0;
  • 二维数组拥有两个轴:axis=0,axis=1;
  • 三维数组拥有三个轴:axis=0,axis=1,axis=2。
  • 四维数组拥有三个轴:axis=0,axis=1,axis=2,axis=3。

2 数组维度

可以从左至右计算数组的方括号数目,一个方括号是一维数组,两个方括号是二维数组,三个方括号是三维数组。

如: [1, 2, 3]是一维数组、

[[1, 2, 3], [4, 5, 6]]是二维数组、

[ [[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]] ] 是三维数组。

0.3 axis(轴)与数组括号的对应关系

numpy数组都有[]标记,其对应关系:axis=0对应最外层的[],axis=1对应第二外层的[],…,axis=n对应第n外层的[]。

6、np.reshape(-1)、np.reshape(-1, 1)、np.reshape(1, -1)详解

np.reshape()规范:新的排布(shape)应与原始排布兼容

-1它指的是未知的维数

  • original = np.array([2, 4, 1, 3],
  • [1, 2, 5, 2])
  • orginal.shape # (2, 4)
  • new_1 = orginal.reshape(-1)
  • print(new_1) # 新排布为(1,8)
  • array([2, 4, 1, 3, 1, 2, 5, 2])
  • # 设定新排布的列数为1,行数为未知
  • new_2 = orginal.reshape(-1, 1)
  • print(new_2) # 新排布为(8,1)
  • array([[ 2],
  • [ 4],
  • [ 1],
  • [ 3],
  • [ 1],
  • [ 2],
  • [ 5],
  • [ 2]])
  • # 设定新排布的行数为1,列数为未知
  • new_3 = orginal.reshape(1, -1)
  • print(new_3) # 新排布为(1,8)
  • array([2, 4, 1, 3, 1, 2, 5, 2])
7、items()

items():遍历字典中所有的key 以及value, items():遍历字典中所有的key 以及value返回“key,value"

  • def hello(**kwargs):
  • for key,value in kwargs.items():
  • print (key,value)
  • hello(name='zhaojinye' ,sex = "nv",husband = "yu")
  • #输出:
  • name zhaojinye
  • sex nv
  • husband yu
8、np.zeros_like()

输入为矩阵x

输出为形状和x一致的矩阵,其元素全部为0

  • >>> import numpy as np
  • >>> a=np.arange(12)
  • >>> a=a.reshape(2,2,3)
  • >>> a
  • array([[[ 0, 1, 2],
  • [ 3, 4, 5]],
  • [[ 6, 7, 8],
  • [ 9, 10, 11]]])
  • >>> b=np.zeros_like(a)
  • >>> b
  • array([[[0, 0, 0],
  • [0, 0, 0]],
  • [[0, 0, 0],
  • [0, 0, 0]]])
  • >>>
9、np.sqrt()

矩阵元素的平方根

  • import numpy
  • array_2d = numpy.array([[1, 4], [9, 16]], dtype=numpy.float)
  • print(array_2d)
  • array_2d_sqrt = numpy.sqrt(array_2d)
  • print(array_2d_sqrt)
  • #
  • [[ 1. 4.]
  • [ 9. 16.]]
  • [[1. 2.]
  • [3. 4.]]
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门