Python 第三方包的使用指南

Python 第三方包的使用指南

  • Python 第三方包的使用指南
    • Numpy
      • 查看ndarray数组中的非零最小项
      • 数组复制
    • Scipy
      • 计算距离矩阵
      • 数学,物理常量和单位
    • cmath
      • 直角坐标系和极坐标系转换

Python 第三方包的使用指南

在仿真的过程中,总有一些方法不复杂,但是自己写就很耗时,而且每次都要去查。因此就专门开一个博客来记录下,调用第三方包中的一些快捷方法。如果有更好的方法可以在评论里留言,我会实时更新的。

Numpy

查看ndarray数组中的非零最小项

import numpy as np 
minval = np.min(a[np.nonzero(a)]) 
maxval = np.max(a[np.nonzero(a)]) 

数组复制

这部分来自我的另一个博客Numpy 100道练习题,这部分持续在更新,可以关注。

这里有两个函数np.repeatnp.tile,这两者的区别在于前者操作的层面是元素,后者操作的层面是轴。

np.repeat(a, repeats, axis)

  • a:表示操作对象,可以是元素也可以是数组
  • repeats:表示复制的次数,可以对数组的每一维(层)的复制次数进行分别制定,例如repeats=(2,3)就是数组的第一维复制两次,第二维复制三次。但是此时需要制定沿哪个轴进行复制。通常repeats的值是一个数,此时得到的结果就是一维数组,每个元素都复制一样的次数。

    注意这里的 维和axis中的维度不是一个对象。

  • axis:复制的轴向,axis=0为第一维度(行),axis=1为第二维度(列)。需要注意的是,如果是三维的话,第一维度不是行,是层,第二维度是行,第三维度是列。

对于多维数组的排序,最简单的方式就是数中括号的层数和顺序。

Z = np.array([[1, 2], [3, 4]])
np.repeat(Z, (2, 1), axis=0)
得到:
array([[1, 2],
       [1, 2],
       [3, 4]])
       
Z = np.array([[1, 2], [3, 4]])
np.repeat(Z, 2)
得到:
array([1, 1, 2, 2, 3, 3, 4, 4])

Z = np.array([[1, 2], [3, 4]])
np.repeat(Z, 2, axis=1)
得到:
array([[1, 1, 2, 2],
       [3, 3, 4, 4]])

np.tile(A, repeats)

  • A:复制的数组
  • repeats:复制次数,这个与np.repeat不同的是,这里的复制不再按照元素来考虑,而是当做整体,如果repeats是一个数字,就是沿着默认的第一维度(行)复制,如果是(a,b)就是沿着第一维度(行)复制a次,沿着第二维度(列)复制b次。
Z = np.array([[1, 2], [3, 4]])
np.tile(Z, 2)
得到:
array([[1, 2, 1, 2],
       [3, 4, 3, 4]])
       
Z = np.array([[1, 2], [3, 4]])
np.tile(Z, (2,3))
得到:
array([[1, 2, 1, 2, 1, 2],
       [3, 4, 3, 4, 3, 4],
       [1, 2, 1, 2, 1, 2],
       [3, 4, 3, 4, 3, 4]])

Scipy

计算距离矩阵

具体用法参考:scipy.spatial.distance.cdist,这里举个简单的例子,

import numpy as np
from scipy.spatial.distance import cdist

Z = np.random.random((10,2))
dist_mat = cdist(Z, Z)

数学,物理常量和单位

以后别再傻傻地去百度各种常量了,直接调用就行。

常量表参考:Constants (scipy.constants)。

cmath

直角坐标系和极坐标系转换

直角坐标系和极坐标系的想换转化,虽然可以自己写,但我懒。不过可以通过实数和复数的转化来实现。

from cmath import polar, rect
from math import degrees, atan

x, y = 1, 1  # * 设置直角坐标系下的坐标
z = complex(x, y)  # * complex是自带函数,不用导入
pz = polar(z)  # * 转为极坐标,得到二元组,前者是边长,后者是弧度

# * 弧度转角度,并进行对比
degrees(atan(1))
degrees(pz[1])

# * 极坐标转直角坐标
rz = rect(pz[0], pz[1])  # * 转为支教坐标,得到二元组,前者是横坐标,后者是纵坐标

这部分参考:python坐标转化极坐标_python极坐标和直角坐标的转换-CSDN。

你可能感兴趣的:(Python,python)