我想知道为什么static Scanner keyboard = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("Enter 8 letters: ");
String letters = keyboard.nextLine().replaceAll(" ", "");
char cArray[] = letters.toCharArray();
System.out.println("Enter any letter to check about it: ");
char letter = keyboard.next().charAt(0);
boolean found = false;
for (int i = 0; i < cArray.length; i++) {
if (cArray[i] == letter) {
System.out.println("We found " + letter + " at position " + i);
found = true;
break; //used as you specify only to find the first one
}
}
if (!found) {
System.out.println("Are you sure about the letter you entered? We didn't find it");
}
}
随机变量类scipy
产生带有dtype stats.bernoulli
的ndarrays作为样本:
int32
对二进制结果使用32位整数值似乎效率极低。我原本期望得到 > stats.bernoulli.rvs(0.3, size=10)
array([0, 1, 0, 1, 0, 1, 0, 0, 0, 1]
> stats.bernoulli.rvs(0.3, size=10).dtype
dtype('int32')
或np.bool
的dtype。
是否有人知道决定将np.int8
数组生成为样本的原因?
备注:我正在使用大(10 ^ 8)个样本。奇怪的是,转换为int32
并没有给我带来任何更好的性能,无论是创建数组还是计算数组上的函数。也许是因为我的CPU只能处理32位/ 64位块......
答案 0 :(得分:1)
在我的系统上它是int64
,所以是的,它只是一个默认的整数大小。为什么不说bool
。在源代码中,它使用scipy.hypergeom
返回整数。
我能想到的唯一方法是使用dtype=np.bool
预先初始化输出数组,如果可以的话。然后,虽然你仍会在stats.bernoulli.rvs
的生成上浪费一些记忆,但你可以立即清理它。