当前位置: 首页 > 面试题库 >

numpy from函数的参数

惠泳
2023-03-14
问题内容

我还没有摸索关键概念numpy

我想创建一个3维数组,并使用函数调用的结果填充每个单元格-即该函数将使用不同的索引多次调用并返回不同的值。

注意:自编写此问题以来,文档已更新为更清晰。

我可以用零(或为空)创建它,然后用for循环覆盖每个值,但是直接从函数中填充它似乎更干净。

fromfunction听起来很完美。阅读文档听起来好像每个单元调用一次该函数。

但是当我实际尝试时…

from numpy import *

def sum_of_indices(x, y, z):
    # What type are X, Y and Z ? Expect int or duck-type equivalent.
    # Getting 3 individual arrays
    print "Value of X is:"
    print x

    print "Type of X is:", type(x)
    return x + y + z

a = fromfunction(sum_of_indices, (2, 2, 2))

我希望得到类似的东西:

Value of X is:
0
Type of X is: int
Value of X is:
1
Type of X is: int

重复4次。

我得到:

Value of X is:
[[[ 0.  0.]
  [ 0.  0.]]

 [[ 1.  1.]
  [ 1.  1.]]]
[[[ 0.  0.]
  [ 1.  1.]]

 [[ 0.  0.]
  [ 1.  1.]]]
[[[ 0.  1.]
  [ 0.  1.]]

 [[ 0.  1.]
  [ 0.  1.]]]
Type of X is: <type 'numpy.ndarray'>

该函数仅被调用一次,并且似乎返回整个数组作为结果。

基于对索引函数的多次调用来填充数组的正确方法是什么?


问题答案:

该文档在这方面 极具 误导性。就像您注意到的那样:f(0,0), f(0,1), f(1,0), f(1,1)numpy而不是执行,而是执行

f([[0., 0.], [0., 1.]], [[1., 0.], [1., 1.]])

尝试使用ndarrays而不是承诺的整数坐标时,您会感到非常沮丧,例如lambda i: l[i],使用,其中l还有另一个数组或列表(尽管实际上,在numpy中可能有更好的方法)。

numpyvectorize函数可以解决此问题。你在哪里

m = fromfunction(f, shape)

尝试使用

g = vectorize(f)
m = fromfunction(g, shape)


 类似资料:
  • 按值传递 Lua 函数的参数大部分是按值传递的。值传递就是调用函数时,实参把它的值通过赋值运算传递给形参,然后形参的改变和实参就没有关系了。在这个过程中,实参是通过它在参数表中的位置与形参匹配起来的。 示例代码: local function swap(a, b) --定义函数swap,函数内部进行交换两个变量的值 local temp = a a = b b = temp

  • 1、函数的参数类型 设置与传递参数是函数的重点,而 Python 的函数对参数的支持非常的灵活。 主要的参数类型有:默认参数、关键字参数(位置参数)、不定长参数。 下面我们将一一了解这几种参数。 2、默认参数 有时候,我们自定义的函数中,如果调用的时候没有设置参数,需要给个默认值,这时候就需要用到默认值参数了。 默认参数,只要在构造函数参数的时候,给参数赋值就可以了 例如: # -*- codin

  • 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。 Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。 默认参

  • 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。 Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。 位置参

  • 参数声明 rust的函数参数声明和一般的变量声明相仿,也是参数名后加冒号,冒号后跟参数类型,不过不需要let关键字。需要注意的是,普通变量声明(let语句)是可以省略变量类型的,而函数参数的声明则不能省略参数类型。 来看一个简单例子: fn main() { say_hi("ruster"); } fn say_hi(name: &str) { println!("Hi, {}", nam

  • 本文向大家介绍Javascript函数的参数,包括了Javascript函数的参数的使用技巧和注意事项,需要的朋友参考一下  本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘 函数的参数                      对于参数值,JavaScript不会进行类型检查,任何类型的值都可以被传递给参数。             对于函数参数,如果过少,没得到值的参数值为undefi

  • 在上面的代码中,我使用了函数bbox_to_anchor,它将图例放置在任意位置。我无法理解函数的前两个论点,Lierture说的都是标准化的轴参数。请任何机构解释一下它们是什么以及如何操纵它们?

  • 1. zend_parse_parameters 2. Arg Info 与类型绑定 3. 小结 前面的章节我们look了一下如何在扩展中定义函数,它们的实现大都比较简单,但是在实际工作中,肯定会碰到函数接收参数的问题,而它就是我们这一章要讲解的内容。