当我调用Array#-它似乎没有调用我正在比较的字符串上的任何比较方法:
class String
def <=>(v)
puts "#{self} <=> #{v}"
super(v)
end
def ==(v)
puts "#{self} == #{v}"
super(v)
end
def =~(v)
puts "#{self} =~ #{v}"
super(v)
end
def ===(v)
puts "#{self} == #{v}"
super(v)
end
def eql?(v)
puts "#{self}.eql? #{v}"
super(v)
end
def equal?(v)
puts "#{self}.equal? #{v}"
super(v)
end
def hash()
puts "#{self}.hash"
super
end
end
p %w{one two three} - %w{two}
Run Code Online (Sandbox Code Playgroud)
它只是返回:
["one", "three"]
Run Code Online (Sandbox Code Playgroud)
那么,Array#-做什么?
另外,我使用的是Ruby 1.9.2p290.在1.8.7中它似乎导致无限循环.
ruby arrays operator-overloading subtraction comparison-operators
我有两个包含日期的字符串"
start_date = 'Sun Sep 16 16:05:15 +0000 2012'
end_date = 'Sun Sep 17 23:55:20 +0000 2012'
Run Code Online (Sandbox Code Playgroud)
我需要执行:end_date - start_date
它应该返回分隔结束日期和开始日期的秒数.
此数据从twitter api中提取.这就是json给我的.由于它看起来像一个常用的字符串,我假设有一个库或方法可以处理这个.我只是找不到一个.谢谢!
我一直在寻找几个小时的答案,但我找不到一个.
我写的很简单script.用户设置他们的工作开始和结束时间.因此,例如,有人在8:00到16:00之间工作.我怎样才能减去这个时间,看看这个人工作了多长时间?
我正在试验strtotime();但没有成功......
我有一些基本的疑惑,但每次我坐下来试试面试问题时,这些问题和我的怀疑都会出现.
说A = 5
B = -2
我说A + B. 我假设A和B是4字节CPU怎么做这个添加?我知道A的符号位(MSB)为0表示正整数,B的符号位为1表示负整数.
现在在C++程序中,我想打印A + B,ALU(算术逻辑单元)的加法模块首先检查符号位然后决定进行减法然后按照减法程序进行.如何进行减法将是我的下一个问题.
A = 5
B = 2
想要做AB计算机将需要2秒补充B并添加A + 2s补充并返回此(丢弃左侧的额外位)?
A = 2
B = 5
做AB在这种情况下,计算机是如何做的?
我知道任何if-then等类型的条件逻辑都将在ALU内部的硬件中完成.计算2s补码等,丢弃额外的位将全部在ALU内部的硬件中完成.ALU的这个组件是什么样的?
谢谢,
我有一个包含键和值的数组.每个值都是整数.我有一个具有相同键的其他数组.如何减去匹配键的所有值?也可能有第二个数组中没有出现的键,但两个数组的长度相同.如果数组2中有一个键不存在于数组1中,则其值应保持不变.如果第一个数组中的某个键不在第二个数组中,则应将其丢弃.我该怎么做?这有什么内置功能吗?
如果我要编写一个脚本,它会像这样循环:
$arr1 = array('a' => 1, 'b' => 3, 'c' => 10);
$arr2 = array('a' => 2, 'b' => 1, 'c' => 5);
$ret = array();
foreach ($arr1 as $key => $value) {
$ret[$key] = $arr2[$key] - $arr1[$key];
}
print_r($ret);
/*
should be: array('a' => 1, 'b' => -2, 'c' => -5)
*/
Run Code Online (Sandbox Code Playgroud)
我没有在这里添加一个密钥在一个数组而不在另一个数组中.
这是一个面试问题.我们只有两个结构
loop(a) 意味着循环一次.increment(a) 递增a.因此,为了实现a + b,可以编写
loop(a) {inc(b)}
return b;
Run Code Online (Sandbox Code Playgroud)
问题是如何实施ab.
我想逐个像素地减去两个图像以检查它们的相似程度.图像具有相同的尺寸,一个稍暗,并且在亮度旁边它们没有区别.但是我在结果中得到了那些小点.我是否减去了这两个图像?两者都是bmp文件.
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class Main2 {
public static void main(String[] args) throws Exception {
int[][][] ch = new int[4][4][4];
BufferedImage image1 = ImageIO.read(new File("1.bmp"));
BufferedImage image2 = ImageIO.read(new File("2.bmp"));
BufferedImage image3 = new BufferedImage(image1.getWidth(), image1.getHeight(), image1.getType());
int color;
for(int x = 0; x < image1.getWidth(); x++)
for(int y = 0; y < image1.getHeight(); y++) {
color = Math.abs(image2.getRGB(x, y) - image1.getRGB(x, y));
image3.setRGB(x, y, color);
}
ImageIO.write(image3, "bmp", new File("image.bmp"));
}
}
Run Code Online (Sandbox Code Playgroud)
图片1

图2

结果
我试图一起减去两个DataFrame.我想将缺失值视为0. fillna()在这里不起作用,因为在进行减法之前我不知道常用索引:
import pandas as pd
A = pd.DataFrame([1,2], index=['a','b'])
B = pd.DataFrame([3,4], index=['a','c'])
A - B
0
a -2
b NaN
c NaN
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望:
A - B
0
a -2
b 2
c -4
Run Code Online (Sandbox Code Playgroud)
是否可以在保持代码简单的同时实现这一目标?
DF1:
City, 2015-12-31, 2016-01-31, ...
YYZ 562.14, -701.18, ...
DFW 562.14, -701.18, ...
YYC 562.14, -701.18, ...
Run Code Online (Sandbox Code Playgroud)
DF2:
City, 2015-12-31, 2016-01-31, ...
SFO 562.14, -701.18, ...
PDX 562.14, -701.18, ...
LAX 562.14, -701.18, ...
Run Code Online (Sandbox Code Playgroud)
我想从df2中减去df1.即减去各个日期列中的值.
我尝试了以下方法:
df2.subtract(df1, fill_value=0)
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
TypeError: unsupported operand type(s) for -: 'str' and 'float'
Run Code Online (Sandbox Code Playgroud)
我认为错误是因为操作无法理解如何在City列中减去字符串,这显然是有道理的,因为减去Cities是荒谬的.
这篇文章[链接]中接受的答案似乎表明这是可能的.我是这个问题的作者,但现在似乎无法让它发挥作用.
我有一个脚本,其中我根据一些设定的时间段对我的数据进行子集化,并希望对上个月发生的所有记录进行子集化.
但是,如果我尝试从今天的日期减去一个月,则会产生一个NA:
> today <- Sys.Date()
> today
[1] "2017-03-29"
> today - months(1)
[1] NA
Run Code Online (Sandbox Code Playgroud)
我确实已经加载了润滑剂,但我认为这个计算是用基数R执行的.如果我减去2个月或更多个月它可以正常工作:
> today - months(2)
[1] "2017-01-29"
> today - months(3)
[1] "2016-12-29"
Run Code Online (Sandbox Code Playgroud)
有没有人对可能发生的事情有任何想法?
更新:我认为这与简单的日期减法有关,不处理闰年案例(2017年不是闰年所以"2017-02-29"不存在).
是否有其他包装/功能考虑到闰年?对于上面的例子,我希望答案恢复到上个月的最后一天,即:
today - months(1)
# Should yield:
"2017-02-28"
Run Code Online (Sandbox Code Playgroud)
这个计算是否有意义为今天和昨天提供相同的结果(或者ISO的惯例是什么)?
> sessionInfo()
R version 3.3.2 (2016-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics …Run Code Online (Sandbox Code Playgroud)