天天看点

numpy基础(part8)--符号数组与矢量化

鄙人学习笔记,这个笔记以例子为主。

开发工具:Spyder

文章目录

  • ​​符号数组​​
  • ​​数组处理函数​​
  • ​​矢量化​​

符号数组

sign()函数可以把样本数组变成对应的符号数组,正数为1,负数为-1,0为0.

相关函数:

np.sign(源数组)      
  • 例子

代码:

import numpy as np

ary01 = np.array([-1, -2, 0, 4, 0, 7])
ary02 = np.sign(ary01)

print('ary02:', ary02)      

结果:

ary02: [-1 -1  0  1  0  1]      

数组处理函数

相关函数:

目标数组 = np.piecewise(源数组, 条件序列, 取值序列)      

针对源数组中的每一个元素,检测其是否符合条件序列中的条件,符合哪个条件就用取值序列中与之对应的值,来表示该元素,并放到目标数组中返回。

  • 例子

代码:

import numpy as np

ary01 = np.array([-1, -2, 0, 4, 0, 7])
ary02 = np.piecewise(ary01, 
                     [ary01 < 0, ary01 == 0, ary01 > 0],
                     [-1, 0, 1])

print('ary02:', ary02)      

结果:

ary02: [-1 -1  0  1  0  1]      

矢量化

矢量化是指用数组代替标量,来操作数组中的每一个元素

numpy提供了vectorize()函数,该函数可以把处理标量的函数矢量化,它的返回值是一个可以直接处理ndarray数组的函数。

  • 例子
import numpy as np

#处理标量的函数
def fun01(a, b):
    return a*b - 1

ary01 = np.arange(3, 9).reshape(2, 3)
ary02 = np.arange(4, 10).reshape(2, 3)

#矢量化函数
fun01_vec = np.vectorize(fun01)
print(fun01_vec(ary01, ary02))      
[[11 19 29]
 [41 55 71]]