【Numpy】vectorize将函数向量化

numpy.vectorize(pyfunc, otypes=None, doc=None, excluded=None, cache=False, signature=None)

用法:np.vectorize(函数)(待函数处理的数据)

Parameters:    
      pyfunc:python函数或方法
      otypes:输出数据类型。必须将其指定为一个typecode字符串或一个数据类型说明符列表。每个输出应该有一个数据类型说明符。
     doc:函数的docstring。如果为None,则docstring将是 pyfunc.__doc__。
     excluded:表示函数不会向量化的位置或关键字参数的字符串或整数集。这些将直接传递给未经修改的pyfunc
     cache:如果为True,则缓存第一个函数调用,该函数调用确定未提供otype的输出数。
     signature:广义通用函数签名,例如,(m,n),(n)->(m)用于矢量化矩阵 - 向量乘法。如果提供的话,pyfunc将调用(并期望返回)具有由相应核心维度的大小给出的形状的数组。默认情况下,假定将标量作为输入和输出。

Returns:    
     vectorized:向量化的数组

首先回顾一下python字典的get()用法

有key的话返回value,没有key则返回None。

dict = {'Name': 'Runoob', 'Age': 27}

dict.get('Age') # 27

dict.get('Name')  # 'Runoob'

dict.get('aaa') # None

dict.get #  是一个函数哦

 vectorize怎么把函数向量化呢?

用法:np.vectorize(函数)(待函数处理的数据)

# 例子1
# 定义函数
def myfunc(a, b):
    if a > b:
        return a - b
    else:
        return a + b

vfunc = np.vectorize(myfunc)([1, 2, 3, 4], 2)
print(vfunc)
# array([3, 4, 1, 2])

# 例子2
testdict = {'Name': 'Runoob', 'Age': 27}
b = np.vectorize(testdict.get)('Name')
print(b) 
# array('Runoob', dtype='

再进阶一些

data = [['341341321','413241321','41324321','313513135'],
['78685765871','566454521','565654545','545456545']]

print(type(data)) # 

data = np.array(data).astype("int64")

print(data)
# [[  341341321   413241321    41324321   313513135]
#  [78685765871   566454521   565654545   545456545]] 

print(type(data))
# 

# 从list转为numpy.array就可以shape了
data.shape
# (2, 4)

# 所有行的第一列
data[:, 0]
# array([  341341321, 78685765871])

data[:, 1:]
# array([[413241321,  41324321, 313513135],
#       [566454521, 565654545, 545456545]])

# 定义一个字典
ooomydict = {341341321:'aaaaa', 78685765871:'bbbbb'}
a = np.vectorize(mydict.get)(data[:, 0])
# 这里data[:, 0] = array([  341341321, 78685765871])
print(a)
# array(['aaaaa', 'bbbbb'], dtype='

代码截图

【Numpy】vectorize将函数向量化_第1张图片

 【Numpy】vectorize将函数向量化_第2张图片

 

部分内容参考

【python】详解numpy.vectorize的使用,将函数向量化_brucewong0516的博客-CSDN博客_np.vectorize

你可能感兴趣的:(编程语言,Hive,&,Sql,&,Spark,numpy,python,开发语言)