标签: map-function

是否可以使用地图定义foldr?

在我定义map使用foldr问题之后,我想到了:

如果可以定义map使用foldr,相反的是什么?

从我的观点来看,这是不可能的,但我找不到合适的解释.谢谢您的帮助!

haskell fold higher-order-functions map-function

8
推荐指数
2
解决办法
838
查看次数

Array(n)和[... Array(n)]之间的区别

为什么下面的代码中map()输出有区别?

var y = [1,2,2,1];

var t = y.map(ind => [...Array(ind)].map((_,i) => ind+""+i));
// This makes [ [ '10' ], [ '20', '21' ], [ '20', '21' ], [ '10' ] ]

var t1 = y.map(ind => Array(ind).map((_,i) => ind+""+i));
//[ [ <1 empty item> ], [ <2 empty items> ], [ <2 empty items> ], [ <1 empty item> ] ]
Run Code Online (Sandbox Code Playgroud)

javascript arrays spread-syntax map-function

8
推荐指数
1
解决办法
94
查看次数

映射列表,最后一个列表元素除外

除了最后一个列表元素外,如何最好地映射列表的所有元素?

假设我们有一个列表let l = [1,2,3,4]并希望得到[2,3,4,4].

我确实有一个解决方案,但它感觉不像是"功能"的方式(在ghci中):

let l = [1,2,3,4]
let len = toIntegral $ length l -- to avoid a type mismatch Integer <-> Int
let l1 = zip l [1..]
let l2 = map (\(x,y) -> if y < len then (x + 1,y) else (x,y)) l1
let l3 = map (fst) l2
Run Code Online (Sandbox Code Playgroud)

不太好......我希望有更好的方法!由于我是函数式编程的新手,我不知道从哪里开始寻找它.

haskell functional-programming list map-function

7
推荐指数
2
解决办法
1334
查看次数

在Haskell中的列表上映射Functor

有点困惑.fmap听起来它可以在map所有的列表中Maybe,但如果我使用eg,我无法让它工作fApplyFunctor = (+1) <$> [Just 1, Just 2].

看起来完美无缺的是:map ((+1) <$>) [Just 1, Just 2, Just 3].从某种意义上来说,这似乎有点矫枉过正,我记得fmap已经可以做到这一点......

haskell functor map-function

7
推荐指数
1
解决办法
146
查看次数

在不使用返回值的情况下执行映射操作是反模式吗?

假设我有一个列表,我想使用映射函数向其中添加一些值:

const arr = [1, 2, 3, 4, 5];
const anotherArr = [];
Run Code Online (Sandbox Code Playgroud)

我使用函数式方法来做到这一点:

arr.map((item) => anotherArr.push(item));
Run Code Online (Sandbox Code Playgroud)

这是一个反模式/错误的逻辑——也就是说,不使用映射操作返回值做任何事情?这方面有什么好的资源吗?

(我知道这个逻辑很愚蠢,我可以复制列表 - 这不是我的问题的重点)

javascript functional-programming map-function

7
推荐指数
1
解决办法
631
查看次数

如何通过函数式编程计算 Java 中的元音?

我需要计算 Functional Java 中单词列表中元音的数量。如果我有这个清单:

List<String> l = Arrays.asList("hello", "world", "test");
Run Code Online (Sandbox Code Playgroud)

我的想法是“删除”元音,然后以这种方式进行减法:

int tot = l.stream().map(s -> s.replace("a", "")).
            map(s -> s.replace("e", "")).
            map(s -> s.replace("i", "")).
            map(s -> s.replace("o", "")).
            map(s -> s.replace("u", "")).
            map(s -> s.length()).reduce(0, Integer::sum);
int res = l.stream().map(s->s.length()).reduce(0, Integer::sum)-tot;
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

java functional-programming functional-java map-function

7
推荐指数
1
解决办法
639
查看次数

与Scala中的"提升"功能混淆

Scala中的函数式编程一书中,有一个"Lift"的例子,其中一个类型的函数A => B被提升为Option[A] => Option[B].

这就是电梯的实施方式:

def lift[A,B](f: A => B):Option[A] => Option[B] = _ map f
Run Code Online (Sandbox Code Playgroud)

我对此有几个困惑:

第一个是,这里的'_'是什么?其次,当我从def中删除返回类型时,期望类型推断能够发挥它的魔力,我得到以下异常:

scala> def lift[A,B](f: A => B) =  _ map f
<console>:7: error: missing parameter type for expanded function ((x$1) => x$1.map(f))
       def lift[A,B](f: A => B) =  _ map f
Run Code Online (Sandbox Code Playgroud)

有人能解释一下这里发生了什么吗?

谢谢

scala type-inference higher-order-functions lifting map-function

6
推荐指数
1
解决办法
671
查看次数

使用 JMESPath 过滤一个简单的数组

我正在尝试过滤从 Azure CLI 获得的普通列表,并且正在努力构建一个正确过滤列表的查询。一个封装了我要完成的任务的示例是尝试过滤列表[1, 2, 3, 4, 5]并尝试获取大于 2 的所有值。

使用 jq,我可以这样做:echo "[1, 2, 3, 4, 5]" | jq "map(select(. > 2))"[3, 4, 5 ]. 据我所知,问题在于无法在 JMESPath 中指示“当前元素”,而没有特定的键可供参考。

我将如何使用 JMESPath 查询过滤像这样的简单列表?

arrays jmespath map-function

6
推荐指数
1
解决办法
4866
查看次数

将python惰性映射应用到就地函数?

有时,我通过反复应用map来构建事物,然后让python一次执行所有操作。

例如,我可以建立如下范围列表:

foo = [256]*3
foo = map(range, foo)
foo = map(list, foo)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我所拥有的只是一个包含3个项目的列表,以及几个地图对象。懒惰了。如果在这一点上我想求值foo,我可以调用,例如,list(foo)所有maps都将执行,并且我将得到一个嵌套的范围列表。

但是,假设我想在一个foo就位的函数上映射一个函数。

foo = [256]*3
foo = map(range, foo)
foo = map(list, foo)
in_place_op = map(lambda x: x.sort(reverse=True), foo)
Run Code Online (Sandbox Code Playgroud)

如果我尝试评估in_place_op,它将无法正确应用于的要素foo。即使我继续进行评估foo,也会发生这种情况,因为它in_place_op已应用于指向以下位置的地图foo

foo = [256]*3
foo = map(range, foo)
foo = map(list, foo)
in_place_op = map(lambda x: x.sort(reverse=True), foo)
foo = list(foo)
list(in_place_op)
print(foo)
#[[1,2,3...],[1,2,3...],[1,2,3...]]
#expected [[255,254,...],...]
Run Code Online (Sandbox Code Playgroud)

为了得到这个工作,我不得不list(foo) 之前 map …

python lazy-evaluation python-3.x map-function

6
推荐指数
1
解决办法
133
查看次数

通过嵌套 tf.map_fn 反向传播梯度

我想在与维度为[batch_size, H, W, n_channels]的矩阵中每个像素的深度通道相对应的每个向量上映射一个 TensorFlow 函数。

换句话说,对于批次中大小为H x W的每个图像:

  1. 我提取一些具有相同大小H x W的特征图F_k (其数量为 n_channels) (因此,特征图一起是形状为[H, W, n_channels]的张量;
  2. 然后,我希望将自定义函数应用于与每个特征图F_k的第 i行和第 j列相关联的向量v_ij,但探索整个深度通道(例如v的尺寸为[1 x 1 x n_channels])。理想情况下,所有这些都会并行发生。

下面有一张解释该过程的图片。与图片的唯一区别是输入和输出“感受野”的大小均为 1x1(独立地将函数应用于每个像素)。

在此输入图像描述

这类似于对矩阵应用 1x1 卷积;但是,我需要在深度通道上应用更通用的函数,而不是简单的求和运算。

我认为tf.map_fn()可能是一个选项,我尝试了以下解决方案,其中我递归地使用tf.map_fn()来访问与每个像素相关的功能。然而,这种似乎不是最优的,最重要的是,它在尝试反向传播梯度时会引发错误

您知道发生这种情况的原因以及我应该如何构建代码以避免错误吗?

这是我当前对该功能的实现:

import tensorflow as tf
from tensorflow import layers


def apply_function_on_pixel_features(incoming):
    # at first the input is [None, W, H, n_channels]
    if len(incoming.get_shape()) > 1: …
Run Code Online (Sandbox Code Playgroud)

gradient nested backpropagation map-function tensorflow

5
推荐指数
1
解决办法
1067
查看次数