【问题标题】:Pass element index in Numpy vectorization在 Numpy 向量化中传递元素索引
【发布时间】:2013-05-26 14:56:52
【问题描述】:

如果你有以下代码:

import numpy as np

def myFunction(element, index):
    print element, index

myVector = np.vectorize(myFunction)
myVector(myArray, currentElementIndex)
  • 如何在 Numpy 向量化中将 currentElementIndex 值传递给 myFunction()

提前致谢!

编辑:我不太确定应该在哪里获取应用myFunction() 的当前项目的索引。我知道如何传递数组元素,但不知道索引。

编辑:用实际代码更新:

import numpy as npy

def getHashValue(character, index):
    return (ord(character) - ord('a')) ** (index + 1)

def getNameHash(name):
    hashValue = getHashValue
    hashValue = npy.vectorize(hashValue)
    hashValue(shortName)
    return

【问题讨论】:

  • 你真正想做什么?问题出在哪里? (我不太明白你的问题)
  • 好吧,我不确定我应该在哪里获得应用“myFunction()”的当前项目的索引。我知道如何传递数组元素,但不知道索引。
  • 您能告诉我们您正在做什么(一个最小的工作示例)以及您希望发生什么吗?您的代码如何不给您应用 myFunction 的项目?这正是它要打印的内容。
  • 我用我的代码更新了我的问题。我想将“getHashValue()”应用于“shortName”字符串中的每个字符。这里的问题是这个函数还需要字符串中每个字符的索引/位置。

标签: arrays numpy vectorization


【解决方案1】:

np.vectorize 是 numpy 中的一个便利函数,它接受一个适用于标量值(“数字”)的函数,并输出一个适用于 numpy 数组的函数(以及它的所有优点,例如广播)。

在您的情况下,您实际上并不需要任何这些,因此使用 enumerate 的列表理解正是您正在寻找的。我猜你的代码是为了做到这一点:

def getHashValue(character, index):
    return (ord(character) - ord('a')) ** (index + 1)

def getNameHash(name):
    return [getHashValue(c, i) for i, c in enumerate(name)]

【讨论】:

    猜你喜欢
    • 2011-08-12
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2020-04-16
    • 2016-05-24
    • 1970-01-01
    • 2019-08-08
    相关资源
    最近更新 更多