ruby 中 map方法

37 篇文章 0 订阅

ruby 中 map方法

对数组中每个元素进行表达式操作,原始数组不会被改变,返回执行表达式结果的新数组

# 把 numbers 中每个值映射到 String 的 Array 
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

numbers.map { |number| number.to_s }  简略为:numbers.map(&:to_s)
=> ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] 

numbers.map { |number| number.to_s + "条回复"}
=> ["1条回复", "2条回复", "3条回复", "4条回复", "5条回复", "6条回复", "7条回复", "8条回复", "9条回复", "10条回复"] 
# 倍数
[1,2,3,4,5,6,7,8,9,10].map{|e| e*3}  
=> [3, 6, 9, 12, 15, 18, 21, 24, 27, 30] 
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ruby的梯度是指函数的导数或斜率。在Ruby,我们可以使用不同的方法来计算和使用梯度。 一种常见的方法是使用数值方法来近似计算梯度。这可以通过计算函数在不同点上的差分来实现。例如,可以使用心差分来计算函数在某个点的一阶导数。 另一种方法是使用符号计算库,如`symbolic`或`symengine`,来求解函数的符号导数。这样可以得到准确的导数表达式,而不是近似值。 以下是一个使用Ruby进行数值梯度计算的示例: ```ruby def gradient(f, x) h = 1e-4 # 微小变化量 gradient = [] x.size.times do |i| dx = Array.new(x.size, 0) dx[i] = h # 计算 f(x + h) f_plus_h = f.call(x.zip(dx).map { |a, b| a + b }) # 计算 f(x - h) f_minus_h = f.call(x.zip(dx).map { |a, b| a - b }) # 计算梯度 gradient << (f_plus_h - f_minus_h) / (2 * h) end gradient end # 示例函数 f(x) = x^2 + y^2 + z^2 f = lambda { |x| x[0]**2 + x[1]**2 + x[2]**2 } # 初始点 (1, 2, 3) x = [1, 2, 3] # 计算梯度 grad = gradient(f, x) puts "梯度:#{grad}" ``` 这个示例的`gradient`方法接受一个函数和一个点作为输入,并计算该函数在给定点处的梯度。然后,我们定义一个示例函数`f(x) = x^2 + y^2 + z^2`,并在初始点`(1, 2, 3)`处计算梯度。 请注意,这只是一个简单的示例,用于说明梯度计算的基本原理。在实际应用,可能需要使用更高级的数值计算库或符号计算库来处理更复杂的函数和变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值