先上代码,主要语句为np.where(b[c]==1),
详细解释如下:
1
2
3
4
5
6
7
8
9
|
import numpy as np b = np.array([[ - 2 , - 3 , 0 , 0 , 0 , 6 , 4 , 1 ],[ 88 , 1 , 0 , 0 , 0 , 6 , 4 , 2 ],[ 99 , 6 , 0 , 0 , 1 , 6 , 4 , 2 ]]) # 三行八列的数组b print ( 'b\n' ,b) c = np.array([ 2 , 0 ]) # c表示指定行 print ( 'b[c]\n' ,b[c]) # b[c]返回 数组b的指定行 这里依次返回了b的下标为2和0的行 print ( '\n' ) print (np.where(b[c] = = 1 )) # 返回指定行的指定元素的位置索引 这里返回了b[c]每行中 值为1的位置索引 |
观察np.where()的返回值(array([0, 1], dtype=int64), array([4, 7], dtype=int64))可以发现,
对于数组b[c]来说,其中值为1的位置在[0,4]以及[1,7]上,np.where()返回了一个元组,[0]的位置表示行索引,[1]表示列索引。
综上,np.where(b[c]==1)实现的功能是,从b中按c中元素的顺序找到c所指定的行,然后再这些行中发现值为1的位置。
补充:短小精悍算例:Python如何提取数组Numpy array中指定元素的位置索引
数组a的表达式如下:
1
2
3
|
import numpy as np a = np.array([ 1 , 2 , 3 , 2 , 2 , 3 , 0 , 8 , 3 ]) print (a) |
输出结果:
[1 2 3 2 2 3 0 8 3]
现在要找出a中元素3的位置索引。
1
2
3
|
r1 = np.where(a = = 3 ) print ( type (r1)) print (r1) |
输出结果:
<class 'tuple'>
(array([2, 5, 8], dtype=int64),)
可见得到的是一个tuple。
如果要想得到array,采用如下表示:
1
2
3
|
r1 = np.where(a = = 3 ) print ( type (r1[ 0 ])) print (r1[ 0 ]) |
输出结果:
<class 'numpy.ndarray'>
[2 5 8]
还可以使用argwhere()函数进行操作:
1
2
3
4
|
r2 = np.argwhere(a = = 3 ) print ( type (r2)) print (r2) print (r2.shape) |
输出结果:
<class 'numpy.ndarray'>
[[2]
[5]
[8]]
(3, 1)
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/weixin_42280517/article/details/89523101