Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NumPy矢量化函数_Python_Numpy_Vectorization - Fatal编程技术网

Python NumPy矢量化函数

Python NumPy矢量化函数,python,numpy,vectorization,Python,Numpy,Vectorization,我最近开始使用NumPy(到目前为止它确实很有用——为什么我不早点开始使用它呢?),但我确信仍有一些事情我做错了: 如何将函数应用于向量(ndarray)?我希望它是矢量化的,它是一个比乘法更复杂的函数。我尝试过使用np.where,但这似乎是一个丑陋的解决方案(我不确定它是否也矢量化了)。有没有类似于map的函数,这样我的函数就可以矢量化了 假设我有一个二维数组——一个二维位置向量的数组,假设我想找到每个向量的范数,如果它超过某个值,做任何事情np.where似乎是一个很好的解决方案,但除非

我最近开始使用NumPy(到目前为止它确实很有用——为什么我不早点开始使用它呢?),但我确信仍有一些事情我做错了:

  • 如何将函数应用于向量(ndarray)?我希望它是矢量化的,它是一个比乘法更复杂的函数。我尝试过使用
    np.where
    ,但这似乎是一个丑陋的解决方案(我不确定它是否也矢量化了)。有没有类似于map的函数,这样我的函数就可以矢量化了

  • 假设我有一个二维数组——一个二维位置向量的数组,假设我想找到每个向量的范数,如果它超过某个值,做任何事情
    np.where
    似乎是一个很好的解决方案,但除非我转置数组:
    np.where(sum(a.t**2)>10,a*2,0)
    (只是一个任意示例)。这看起来很冗长,转置也没有多大意义

  • 最后,如果我有一个三维数组-一个二维位置向量的二维数组(这样在位置[1,2]处就是向量(1,2))。如何迭代所有向量(使用向量化函数,如np.where)?我一直在使用
    np.reformate
    ,但如果可能的话,我想保持数组的形状不变


我将这些问题组合在一起,因为它们看起来很相似,但如果我需要将它们分成不同的线程,请让我知道,我会这样做

像上面的评论一样,我不太确定你在问什么。但对于第一个问题,以这个例子:

假设你有一个二维向量的numpy数组,你想计算每个向量的范数。你不能做一些类似于:

import numpy as np

x = np.arange(20).reshape(10,2)
norm_func = lambda z: sum(z**2)
norm_func(x.T)
这将给出结果

array([ 1,  5,  9, 13, 17, 21, 25, 29, 33, 37])
对于数组

array([[ 0,  1],
       [ 2,  3],
       [ 4,  5],
       [ 6,  7],
       [ 8,  9],
       [10, 11],
       [12, 13],
       [14, 15],
       [16, 17],
       [18, 19]])

虽然有一些方法可以完成您描述的事情,但您可能会检查哪些设置可以处理这些操作。您的第一个问题是什么意思?显然,您可以将多个算术运算符和其他运算符链接在一起,以构建更大的函数。否则,如果你想矢量化你的函数,你需要使用C或Fortran(或Cython),因为numpy无法绕过对每个元素调用函数的开销?(只是一个例子,我不会只是总结一下)。我仍然不清楚你在问什么。您应该发布一些输入和输出示例,以演示您的意思。另外,我真的建议你先看看熊猫,因为它们可能会让你找到一个可行的解决方案(而且只需要很少的努力)。