如同for循环一样,numpy中的where方法可以实现嵌套功能。这是简化嵌套式矩阵逻辑的一个很好的方法。
假设有一个矩阵,需要把小于0的元素改成-1,大于0的元素改成1,而等于0的时候不做修改。
那么,对应的代码示范如下:
1
2
3
4
5
6
7
8
9
10
11
|
#!/usr/bin/python import numpy as np data = np.random.randn( 4 , 5 ) data1 = np.where(data > 0 , 1 , np.where(data < 0 , - 1 , 0 )) print ( "datavalue:" ) print (data) print ( "data1value:" ) print (data1) |
程序的执行结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
In [ 3 ]: % runpython_exp04.py data value: [[ - 2.06262429 0.94548656 - 0.29458562 0.82657 - 1.08587439 ] [ - 0.67416161 0.77247191 0.60330603 0.73694198 - 0.63761278 ] [ 0.24887356 - 0.27086027 0.34312363 0.727303 0.72741593 ] [ - 0.48973095 - 0.33185631 - 1.23341695 0.13569267 2.06881178 ]] data1 value: [[ - 1 1 - 1 1 - 1 ] [ - 1 1 1 1 - 1 ] [ 1 - 1 1 1 1 ] [ - 1 - 1 - 1 1 1 ]] |
这种用法,不仅比单纯通过复合的循环遍历实现的代码更加简洁,而且在执行效率上有着很大的优势。很多时候,计算的向量化就是为了能够加速整个程序的执行速度。
以上这篇对numpy中的where方法嵌套使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/grey_csdn/article/details/69803070