我正在看一个C++类,它有以下几行:
while( x > y );
return x - y;
Run Code Online (Sandbox Code Playgroud)
x并且y是类型的成员变量volatile int.我不明白这个结构.
我在这里找到了代码存根:https://gist.github.com/r-lyeh/cc50bbed16759a99a226.我想这不保证是正确的甚至是工作.
我在使用CMake编译CUDA代码时遇到问题.我使用的是CUDA 7,nvcc的版本信息如下:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2014 NVIDIA Corporation
Built on Tue_Dec__9_18:10:46_CST_2014
Cuda compilation tools, release 7.0, V7.0.17
Run Code Online (Sandbox Code Playgroud)
我的CMake文件使用find_cuda宏,如下所示:
find_package(CUDA)
if(CUDA_FOUND)
list(APPEND CUDA_NVCC_FLAGS "-arch=sm_20;--compiler-options;-std=c++11;-O2;-DVERBOSE")
endif(CUDA_FOUND)
Run Code Online (Sandbox Code Playgroud)
在许多帖子建议需要这个之后,我添加了std = c ++ 11编译器标志.但是,无论是否有此标志,我都会得到完全相同的错误.
我还添加了以下内容以从nvcc编译标志中删除C++ 11支持,但这也不会改变任何内容.
if(CMAKE_COMPILER_IS_GNUCC)
string(REPLACE "-std=c++11" "" CUDA_HOST_FLAGS "${CUDA_HOST_FLAGS}")
string(REPLACE "-std=c++0x" "" CUDA_HOST_FLAGS "${CUDA_HOST_FLAGS}")
endif(CMAKE_COMPILER_IS_GNUCC)
Run Code Online (Sandbox Code Playgroud)
我得到的错误如下:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h(432): error: identifier "nullptr" is undefined
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h(432): error: expected
a ";"
/usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h(190): error:
expected a ";"
/usr/include/c++/4.8/exception(63): error: expected a ";"
/usr/include/c++/4.8/exception(68): error: expected a ";"
/usr/include/c++/4.8/exception(76): error: expected a ";" …Run Code Online (Sandbox Code Playgroud) 一个 n 维数组有 2n 个边(一个一维数组有 2 个端点;一个二维数组有 4 个边或边;一个 3 维数组有 6 个二维面;一个 4 维数组有 8 个边;等等。)。这类似于抽象的 n 维立方体所发生的情况。
我想检查一个 n 维数组的所有边是否只由零组成。以下是边由零组成的数组的三个示例:
# 1D
np.array([0,1,2,3,0])
# 2D
np.array([[0, 0, 0, 0],
[0, 1, 0, 0],
[0, 2, 3, 0],
[0, 0, 1, 0],
[0, 0, 0, 0]])
# 3D
np.array([[[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]],
[[0, 0, 0, 0],
[0, 1, 2, 0],
[0, 0, 0, 0]],
[[0, 0, 0, 0],
[0, 0, 0, …Run Code Online (Sandbox Code Playgroud) 我有一个彩色图像,我想在OpenCV中的阈值.我想要的是,如果任何RGB通道在一定值以下,则将所有通道中的值设置为零(即黑色).
所以,我使用opencv阈值函数:
cv::Mat frame, thresholded
// read frame somewhere, it is a BGR image.
cv::threshold(frame, thresholded, 5, 255, cv::THRESH_BINARY);
Run Code Online (Sandbox Code Playgroud)
所以,我认为这样做的是,如果任何通道小于5,我认为它会将它们设置为零.但是,它似乎没有那样工作.例如,我看到只有绿色通道通过其中一些区域,表明并非所有通道都设置为0.
有没有办法快速使用OpenCV实现这一目标?
我正在使用NumPy创建几个多维数组,并根据索引对它们进行初始化,如下所示:
pos_data = []
# Some typical values
d = 2 # Could also be 3
vol_ext = (1000, 500) # If d = 3, this will have another entry
ratio = [5.0, 8.0] # Again, if d = 3, it will have another entry
for i in range(d):
pos_data.append(np.zeros(vol_ext))
if d == 2:
for y in range(vol_ext[1]):
for x in range(vol_ext[0]):
pos_data[0][x, y] = (x - 1.0) * ratio[0]
pos_data[1][x, y] = (y - 1.0) * ratio[1]
elif d …Run Code Online (Sandbox Code Playgroud) 我有两个numpy数组,我试图将一个与另一个分开,同时,我想确保除数为0的条目应该只用0替换.
所以,我做了类似的事情:
log_norm_images = np.where(b_0 > 0, np.divide(diff_images, b_0), 0)
Run Code Online (Sandbox Code Playgroud)
这给了我一个运行时警告:
RuntimeWarning: invalid value encountered in true_divide
Run Code Online (Sandbox Code Playgroud)
现在,我想看看发生了什么,我做了以下事情:
xx = np.isfinite(diff_images)
print (xx[xx == False])
xx = np.isfinite(b_0)
print (xx[xx == False])
Run Code Online (Sandbox Code Playgroud)
但是,这两个都返回空数组,这意味着数组中的所有值都是有限的.所以,我不确定无效值的来源.我假设在np.where函数中检查b_0> 0来处理除以0.
两个阵列的形状是(96,96,55,64)和(96,96,55,1)
我有一个形状为(100,170,256)的numpy数组.我有一个由索引[0,10,20,40,70]组成的数组.
我可以得到与索引对应的子数组,如下所示:
sub_array = array[..., index]
Run Code Online (Sandbox Code Playgroud)
这将返回一个具有预期形状(100,170,5)的数组.现在,我试图获取补充并获得与这些索引不对应的子数组.所以我做了:
sub_array = array[..., ~index]
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这仍然会返回一个形状数组(100,170,5).我想知道如何在python中对这些索引进行补充操作?
[编辑]
还尝试过:
sub_array = array[..., not(index.any)]
Run Code Online (Sandbox Code Playgroud)
然而,这并没有我想要的东西(获得形状的数组(100,170,251).
我sys.getsizeof在python中使用函数时遇到了很多困惑.我想要找出的是,对于浮点值,系统使用4或8个字节(即C语言中的单精度或双精度).
我做以下事情:
import sys
x = 0.0
sys.getsizeof(x) # Returns 24
type(x) # returns float
sys.getsizeof(float) # Returns 400.
Run Code Online (Sandbox Code Playgroud)
我怎样才能简单地找出实际用于浮点表示的字节数.我知道它应该是8个字节,但我怎么能验证这个(类似于sizeofC++中的运算符)
我有一个numpy数组,它包含4维向量,其格式如下(x,y,z,w)
数组的大小是4 x N.现在,我拥有的数据是我有(x,y,z)空间位置的地方,w在这个位置保持一些特定的测量.现在,可能存在与(x,y,z)位置相关联的多个测量值(以浮点数测量).
我想做的是过滤数组,这样我得到一个新的数组,我得到与每个(x,y,z)位置对应的最大测量值.
所以,如果我的数据如下:
x, y, z, w1
x, y, z, w2
x, y, z, w3
Run Code Online (Sandbox Code Playgroud)
其中w1大于w2和w3,过滤的数据将是:
x, y, z, w1
Run Code Online (Sandbox Code Playgroud)
更具体地说,我有以下数据:
[[ 0.7732126 0.48649481 0.29771819 0.91622924]
[ 0.7732126 0.48649481 0.29771819 1.91622924]
[ 0.58294263 0.32025559 0.6925856 0.0524125 ]
[ 0.58294263 0.32025559 0.6925856 0.05 ]
[ 0.58294263 0.32025559 0.6925856 1.7 ]
[ 0.3239913 0.7786444 0.41692853 0.10467392]
[ 0.12080023 0.74853649 0.15356663 0.4505753 ]
[ 0.13536096 0.60319054 0.82018125 0.10445047]
[ 0.1877724 0.96060999 0.39697999 0.59078612]]
Run Code Online (Sandbox Code Playgroud)
这应该回来了
[[ 0.7732126 0.48649481 0.29771819 1.91622924]
[ …Run Code Online (Sandbox Code Playgroud) 我在使用Eigen库时遇到错误,我想要做的就是从Eigen :: VectorXf中减去一个标量.所以,我的代码如下:
#define VECTOR_TYPE Eigen::VectorXf
#define MATRIX_TYPE Eigen::MatrixXf
// myMat is of MATRIX_TYPE
JacobiSVD<MATRIX_TYPE> jacobi_svd(myMat,ComputeThinU | ComputeThinV);
const float offset = 3.0f;
VECTOR_TYPE singular_values = jacobi_svd.singularValues();
VECTOR_TYPE test = singular_values - offset;
Run Code Online (Sandbox Code Playgroud)
最后一行导致编译错误:
错误:二进制表达式的无效操作数('Eigen :: VectorXf'(又名'Matrix')和'浮动')VECTOR_TYPE test = singular_values - scale;
Eigen/src/Core /../ plugins/CommonCwiseBinaryOps.h:19:28:注意:候选模板被忽略:无法将'MatrixBase'与'float'匹配EIGEN_MAKE_CWISE_BINARY_OP(operator-,internal :: scalar_difference_op)