您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

numpy矩阵行/列上的函数应用

numpy矩阵行/列上的函数应用

几乎所有的numpy函数都在整个数组上运行,并且/或者可以被告知在特定的轴(行或列)上运行。

只要您可以根据作用在numpy数组或数组切片上的numpy函数来定义函数,您的函数自动在整个数组,行或列上运行。

询问如何实现特定功能以获得更具体的建议可能会更有用。

Numpy提供np.vectorizenp.frompyfunc来将对数字进行操作的Python函数转换为对numpy数组进行操作的函数

例如,

def myfunc(a,b):
    if (a>b): return a
    else: return b
vecfunc = np.vectorize(myfunc)
result=vecfunc([[1,2,3],[5,6,9]],[7,4,5])
print(result)
# [[7 4 5]
#  [7 6 9]]

(当第二个数组较大时,第一个数组的元素将替换为第二个数组的相应元素。)

但是不要太兴奋;np.vectorize并且np.frompyfunc只是语法糖。它们实际上并没有使您的代码更快。如果您的基础Python函数一次仅对一个值进行操作,则一次np.vectorize将其馈入一个项,并且整个操作将非常缓慢(与使用numpy函数调用某些基础C或Fortran实现相比) 。

要计算x小于数字的column元素个数y,可以使用如下表达式:

(array['x']<y).sum()

例如:

import numpy as np
array=np.arange(6).view([('x',np.int),('y',np.int)])
print(array)
# [(0, 1) (2, 3) (4, 5)]

print(array['x'])
# [0 2 4]

print(array['x']<3)
# [ True  True False]

print((array['x']<3).sum())
# 2
其他 2022/1/1 18:42:05 有500人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶