小编bam*_*222的帖子

为什么变量声明为Map并初始化为HashMap;它们不是不同类型吗?

假设我想取得HashMap成绩。

 Map<String,Integer> grades = new HashMap<String,Integer>(); 
 grades.put("John", 87); // this work due to auto-boxing right?
 grades.put("Luke", Integer(85)); // non-autoboxed, is this redundant? 
Run Code Online (Sandbox Code Playgroud)

为什么地图分在左边和HashMap<K, V>( );右边?每当创建对象时都需要类型一致性,这不是一条规则吗?除非名称的静态类型是 Map 并且动态类型是HashMap,它可能是 的子类Map。但你为什么要这样做呢?方法调用是从对象静态类型(例如 s)的角度调用的Map,但如果动态类型中有重写的方法,则会调用这些方法。这就是类型不同的原因吗?

谢谢!新手问题,但这东西可能会令人困惑......

编辑:

谢谢!所以一般格式为:Interface varName = new ImplementedClassConstructor(); ?我们经常选择超类接口,因为它允许以后更容易替换(例如,如果我想将 HashMap 更改为 TreeMap?

java types casting hashmap

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

同步并通知执行顺序和范围

1)一旦在该线程同步代码块内调用notify,或者一旦退出同步代码块,线程是否会立即放弃它的锁?

例如,似乎在不指定线程优先级的情况下,我的 Process 类将从上到下执行。Produce 将首先被调用,它将执行一些操作,然后 wait(); Consumer会运行,然后它会调用notify(),它将打印“Done”,或者会先有5秒的延迟,然后打印“Done”?

2)另外,如果我有第三个同步方法/线程,它不等待或通知而只是运行,我可以先验地预测我的操作执行的顺序吗?

3)最后,notify()如何知道要“唤醒”哪个线程?例如,假设我有多个进程,每个进程同时执行 2 个线程,并且每个进程 A、B 和 C 都会调用 notification()。每个notify()对于每个进程来说都是本地的吗?换句话说,如果进程A调用notify(),是否可以唤醒进程B中正在等待的线程?到目前为止,我已经看到了在(this)上调用了synchronized,这让我认为它引用了一个特定的对象类,这反过来又让我认为在synchronized块中调用的所有notify()都受到synchronized( this) 指的是,所以不会有交叉。

public class Process {

public void produce( ) {
  synchronized(this) {
   // do stuff
    wait( );
     System.out.println("Done");
    }
}


public void consume( ) {
    synchronized(this) {
    // stuff
    notify(); 
    Thread.sleep(5000);
    }
}
}
Run Code Online (Sandbox Code Playgroud)

java multithreading synchronization

4
推荐指数
1
解决办法
2872
查看次数

如何对一串DNA代码中的每个[:2]重叠字符进行迭代?

假设我有一串DNA'GAAGGAGCGGCGCCCAAGCTGAGATAGCGGCTAGAGGCGGGTAACCGGCA'

考虑前5个字母:GAAGG

我想用一些与它们发生的可能性相对应的数字替换每个重叠的二元组'GA','AA','AG','GG',将它们相加.像'GA'= 1,'AA'= 2,'AG'= .7,'GG'= .5.所以对于GAAGG,我的sumAnswer = 1 + 2 + .7 + 5.

所以在pseduo代码中,我想... - 在我的DNA字符串中对每个重叠的二元语法进行设置 - 找到每个唯一二元对的相应值 - 每个值迭代地为每个值

我不是很确定如何迭代每一对.我认为for循环可行,但不考虑重叠:它打印每2对(GAGC = GA,GC),而不是每个重叠的2对(GAGC = GA,AG,GC)

for i in range(0, len(input), 2):
      print input[i:i+2]
Run Code Online (Sandbox Code Playgroud)

有小费吗?

python string iterator for-loop n-gram

3
推荐指数
2
解决办法
1891
查看次数

为什么在line.split()上编写str.split(line)是有意义的?

对于str.split(line),我在str类上调用一个方法,并将一个行对象(恰好是一个充满字符串的列表)传递给字符串对象?

我似乎更清楚我应该在我的线对象上调用split()方法.

我无法理解为什么两种方式都有效.

python oop string

2
推荐指数
1
解决办法
78
查看次数

决策树基尼杂质基础数学Q

假设您有 3 类球:红色、绿色、蓝色。

出现任何彩色球的几率是红色 = 4/10,蓝色 = 3/10,绿色 = 3/10

错误分类红色的计算方法为 4/10*(3/10 + 3/10) 或选择“真实类别”*“错误类别”的几率。

为什么要乘以而不是说加来找出选错红球的几率?我知道基尼杂质方程将这个基本思想概括为所有 C 类,每个类的 N 点和 Ni 数据点。我想我忘记了我的基本概率直觉。

math machine-learning probability decision-tree

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

如何在不丢失索引的情况下转换 pandas 中的数据框?

我需要对 12 列数据框中的两列进行缩尾处理。

假设我有“A”、“B”、“C”和“D”列,每列都有一系列值。鉴于我清理了一些 NaN 列,列数从 100 减少到 80,但它们仍然索引为 100,有间隙(例如,第 5 行丢失)。

我想通过 winsorize 方法仅转换列“A”和“B”。为此,我必须将列转换为 np.array。

import scipy.stats
df['A','B','C','D'] = #some values per each column
ab_df = df['A','B']
X = scipy.stats.mstats.winsorize(ab_df.values, limits=0.01)
new_ab_df = pd.DataFrame(X, columns = ['A','B'])
df = pd.concat([df['C','D'], new_ab_df], axis=1, join='inner', join_axes=[df.index])
Run Code Online (Sandbox Code Playgroud)

当我转换为 np.array,然后返回 pd.DataFrame 时,len() 在 80 处是正确的,但我的索引已重置为 0->80。如何确保我的转换“A”和“B”列正确索引?我不认为我可以使用 apply() ,它会保留索引顺序并简单地交换值,而不是我的方法,它创建仅包含 2 列的 df 的转换副本,然后将它们连接到我的其余部分未转换的列。

python scipy pandas data-cleaning

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

从计算的多元核密度估计中采样

假设我在地图上有 X 和 Y 坐标以及“热区”的非参数分布(例如,位于 X 和 Y 坐标处的地理地图上的污染程度)。我的输入数据是热图。

我想训练一个机器学习模型来学习“热区”是什么样子,但我没有很多标记的例子。所有“热区”看起来都非常相似,但可能位于我的标准化 XY 坐标图的不同部分。

我可以计算一个多元 KDE 并相应地绘制密度图。要生成合成标记数据,我是否可以“反转”KDE 并随机生成新的图像文件,其观察值在我的 KDE 的“密集”范围内?

有没有办法在python中做到这一点?

python statistics machine-learning kernel-density

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