numpy常用命令

什么是numpy

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:

  • 一个强大的N维数组对象 ndarray
  • 广播功能函数
  • 整合 C/C++/Fortran 代码的工具
  • 线性代数、傅里叶变换、随机数生成等功能

求最大值np.max及其索引np.argmax

由于我太菜了这里只介绍一维数组用法。

1
2
one_dim_array = np.array([1, 4, 5, 3, 7, 2, 6])
print(np.argmax(one_dim_array), np.max(one_dim_array))
1
4 7

生成全零数组np.zeros

1
2
vis = np.zeros((512,512), dtype = bool)
blo = np.zeros((512,512), dtype = int)

dtype可以指定类型。blo如果不指定类型,可能会是[[0.,0.,0.,……]]

矩阵二值化np.where

我正在寻找一种基于阈值仅使用一个表达式来对numpy N-d数组进行二值化的方法。

1
2
3
4
np.random.seed(0)
np.set_printoptions(precision=3)
a = np.random.rand(4, 4)
threshold, upper, lower = 0.5, 1, 0

a现在是:

1
2
3
4
array([[ 0.02 ,  0.833,  0.778,  0.87 ],
[ 0.979, 0.799, 0.461, 0.781],
[ 0.118, 0.64 , 0.143, 0.945],
[ 0.522, 0.415, 0.265, 0.774]])

现在我可以触发这两个表达式:

1
2
a[a>threshold] = upper
a[a<=threshold] = lower

实现我的目标:

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

但有没有办法只用一个表达式来做到这一点?

有的!

1
2
3
4
5
6
np.where(a>threshold, upper, lower)
Out[6]:
array([[0, 1, 1, 1],
[1, 1, 0, 1],
[0, 1, 0, 1],
[1, 0, 0, 1]])
打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2023 glisses
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信