我创建了一个简单的 numpy 数据类型 uint ,如下所示:
import numpy as np
a = np.array([1,2,3], dtype=np.uint)
Run Code Online (Sandbox Code Playgroud)
当我计算时
a[0] + 1
Run Code Online (Sandbox Code Playgroud)
我期望结果为 2,但它给出了
2.0
Run Code Online (Sandbox Code Playgroud)
为什么 np.uint 需要隐式转换为 float?请注意,int 或 np.int64 不会发生这种情况
由于&v[0]和v.data()提供了相同的方式来访问 的底层指针std::vector,我想知道哪种方法在稳定性和可移植性方面是更好的选择?
我总是假设双精度除以整数会产生更快的代码,因为编译器会选择更好的微代码来计算:
double a;
double b = a/3.0;
double c = a/3; // will compute faster than b
Run Code Online (Sandbox Code Playgroud)
对于单个操作而言,这无关紧要,但对于重复操作而言,它可能会有所不同。我的假设总是正确的还是依赖于编译器或 CPU 之类的?
同样的问题也适用于乘法;即会3 * a比3.0 * a?