打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
50个常用的Numpy函数详解!(二)
userphoto

2023.06.15 广西

关注

17、digitize

返回输入数组中每个值所属的容器的索引。

numpy.digitize(x, bins, right=False)[source]

bin:容器的数组。
right:表示该间隔是否包括右边或左边的bin。

a = np.array([-0.9, 0.5, 0.9, 1, 1.2, 1.4, 3.6, 4.7, 5.3])
bins = np.array([0,1,2,3])
np.digitize(a,bins)
-------------------------------
array([0, 1, 1, 2, 2, 2, 4, 4, 4], dtype=int64)
Exp       Value
x < 0     :   0
0 <= x <1 :   1
1 <= x <2 :   2
2 <= x <3 :   3
3 <=x     :   4
Compares -0.9 to 0, here x < 0 so Put 0 in resulting array.
Compares 0.5 to 0, here 0 <= x <1 so Put 1.
Compares 5.4 to 4, here 3<=x so Put 4


18、reshape

它是NumPy中最常用的函数之一。它返回一个数组,其中包含具有新形状的相同数据。信搜索公众号:架构师指南,回复:架构师 领取资料 。

numpy.reshape(shap)
A = np.random.randint(15,size=(4,3))
A
----------------------
array([[ 8, 14, 1],
      [ 8, 11, 4],
      [ 9, 4, 1],
      [13, 13, 11]])

A.reshape(3,4)
-----------------
array([[ 8, 14, 1, 8],
      [11, 4, 9, 4],
      [ 1, 13, 13, 11]])

A.reshape(-1)  
-------------------
array([ 8, 14, 1, 8, 11, 4, 9, 4, 1, 13, 13, 11])


19、expand_dims

它用于扩展数组的维度。

numpy.expand_dims(a, axis)
arr = np.array([ 8, 14, 1, 8, 11, 4, 9, 4, 1, 13, 13, 11])
np.expand_dims(A,axis=0)
-------------------------
array([[ 8, 14, 1, 8, 11, 4, 9, 4, 1, 13, 13, 11]])

np.expand_dims(A,axis=1)
---------------------------
array([[ 8],
      [14],
      [ 1],
      [ 8],
      [11],
      [ 4],
      [ 9],
      [ 4],
      [ 1],
      [13],
      [13],
      [11]])


20、squeeze

通过移除一个单一维度来降低数组的维度。

np.squeeze(a, axis=None)
arr = np.array([[ 8],[14],[ 1],[ 8],[11],[ 4],[ 9],[ 4],[ 1],[13],[13],[11]])
np.squeeze(arr)
---------------------------
array([ 8, 14, 1, 8, 11, 4, 9, 4, 1, 13, 13, 11])


21、count_nonzero

计算所有非零元素并返回它们的计数。

numpy.count_nonzero(a, axis=None, *, keepdims=False)
a = np.array([0,0,1,1,1,0])
np.count_nonzero(a)
--------------------------
3


22、argwhere

查找并返回非零元素的所有下标。

numpy.argwhere(a)
a = np.array([0,0,1,1,1,0])
np.argwhere(a)
---------------------
array([[2],[3],[4]], dtype=int64)


23、argmax & argmin

argmax返回数组中Max元素的索引。它可以用于多类图像分类问题中获得高概率预测标签的指标。

numpy.argmax(a, axis=None, out=None, *, keepdims=<no value>)
arr = np.array([[0.12,0.64,0.19,0.05]])
np.argmax(arr)
---------
1

argmin将返回数组中min元素的索引。

numpy.argmin(a, axis=None, out=None, *, keepdims=<no value>)
np.argmin(min)
------
3


24、sort

对数组排序。

numpy.sort(a, axis=- 1, kind=None, order=None)

kind:要使用的排序算法。{'quicksort’, 'mergesort’,

arr = np.array([2,3,1,7,4,5])
np.sort(arr)
----------------
array([1, 2, 3, 4, 5, 7])


25、abs

numpy.absolute(x, /, out=None, *, 
               where=True, casting='same_kind'
               order='K', dtype=None, 
               subok=True[, signature, extobj]) = <ufunc 'absolute'>

返回数组中元素的绝对值。当数组中包含负数时,它很有用。

A = np.array([[1,-3,4],[-2,-4,3]])np.abs(A)
---------------
array([[1, 3, 4],
      [2, 4, 3]])


26、round

将浮点值四舍五入到指定数目的小数点。

numpy.around(a, decimals=0, out=None)

decimals:要保留的小数点的个数。

a = np.random.random(size=(3,4))
a
-----
array([[0.81695699, 0.42564822, 0.65951417, 0.2731807 ],
      [0.7017702 , 0.12535894, 0.06747666, 0.55733467],
      [0.91464488, 0.26259026, 0.88966237, 0.59253923]])
     

np.round(a,decimals=0)
------------
array([[1., 0., 1., 1.],
      [1., 1., 1., 1.],
      [0., 1., 0., 1.]])

np.round(a,decimals=1)
-------------
array([[0.8, 0. , 0.6, 0.6],
      [0.5, 0.7, 0.7, 0.8],
      [0.3, 0.9, 0.5, 0.7]])


27、clip

numpy.clip(a, a_min, a_max, out=None, **kwargs)

它可以将数组的裁剪值保持在一个范围内。

arr = np.array([0,1,-3,-4,5,6,7,2,3])
arr.clip(0,5)
-----------------
array([0, 1, 0, 0, 5, 5, 5, 2, 3])

arr.clip(0,3)
------------------
array([0, 1, 0, 0, 3, 3, 3, 2, 3])

arr.clip(3,5)
------------------
array([3, 3, 3, 3, 5, 5, 5, 3, 3])
 向量化操作的概述替换数组中的值

28、where

返回满足条件的数组元素。

numpy.where(condition, [x, y, ]/)

condition:匹配的条件。如果true则返回x,否则y。

a = np.arange(12).reshape(4,3)
a
-------
array([[ 0, 1, 2],
      [ 3, 4, 5],
      [ 6, 7, 8],
      [ 9, 10, 11]])
     
np.where(a>5)     ## Get The Index
--------------------
(array([2, 2, 2, 3, 3, 3], dtype=int64),
array([0, 1, 2, 0, 1, 2], dtype=int64))

a[np.where(a>5)] ## Get Values
--------------------------
array([ 6, 7, 8, 9, 10, 11])

它还可以用来替换pandas df中的元素。

np.where(data[feature].isnull(), 1, 0)


29、put

用给定的值替换数组中指定的元素。

numpy.put(a, ind, v)

a:数组
Ind:需要替换的索引
V:替换值

arr = np.array([1,2,3,4,5,6])
arr
--------
array([1, 2, 3, 4, 5, 6])

np.put(arr,[1,2],[6,7])
arr
--------
array([1, 6, 7, 4, 5, 6])


30、copyto

将一个数组的内容复制到另一个数组中。

numpy.copyto(dst, src, casting='same_kind'where=True)

dst:目标
src:来源

arr1 = np.array([1,2,3])
arr2 = np.array([4,5,6])
print('Before arr1',arr1)
print('Before arr2',arr1)
np.copyto(arr1,arr2)
print('After arr1',arr1)
print('After arr2',arr2)
---------------------------
Before arr1 [1 2 3]
Before arr2 [4 5 6]

After arr1 [4 5 6]
After arr2 [4 5 6]
 集合操作

31、查找公共元素

intersect1d函数以排序的方式返回两个数组中所有唯一的值。

numpy.intersect1d(ar1, ar2, assume_unique=False, return_indices=False)

Assume_unique:如果为真值,则假设输入数组都是唯一的。
Return_indices:如果为真,则返回公共元素的索引。

ar1 = np.array([1,2,3,4,5,6])
ar2 = np.array([3,4,5,8,9,1])
np.intersect1d(ar1,ar2)
---------------
array([1, 3, 4, 5])

np.intersect1d(ar1,ar2,return_indices=True)
---------------
(array([1, 3, 4, 5]),                 ## Common Elements
array([0, 2, 3, 4], dtype=int64),    
array([5, 0, 1, 2], dtype=int64))


32、查找不同元素

numpy.setdiff1d(ar1, ar2, assume_unique=False)

np.setdiff1d函数返回arr1中在arr2中不存在的所有唯一元素。

a = np.array([1, 7, 3, 2, 4, 1])
b = np.array([9, 2, 5, 6, 7, 8])
np.setdiff1d(a, b)
---------------------
array([1, 3, 4])


33、从两个数组中提取唯一元素

numpy.setxor1d(ar1, ar2, assume_unique=False)

Setxor1d 将按顺序返回两个数组中所有唯一的值。

a = np.array([1, 2, 3, 4, 6])
b = np.array([1, 4, 9, 4, 36])
np.setxor1d(a,b)
--------------------
array([ 2, 3, 6, 9, 36])


34、合并

numpy.union1d(ar1, ar2)

Union1d函数将两个数组合并为一个。

a = np.array([1, 2, 3, 4, 5])
b = np.array([1, 3, 5, 4, 36])
np.union1d(a,b)
-------------------
array([ 1, 2, 3, 4, 5, 36])

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python数据分析之numpy学习(二)
【Python数据挖掘】第三篇
Python numpy的基本操作你一般人都不会
50个常用的 Numpy 函数详解!
Python知识普及:Numpy基础操作
如果不懂 numpy,请别说自己是 python 程序员
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服