小编Luc*_*uca的帖子

虽然循环与空体检查易失性int - 这是什么意思?

我正在看一个C++类,它有以下几行:

while( x > y );
return x - y;
Run Code Online (Sandbox Code Playgroud)

x并且y是类型的成员变量volatile int.我不明白这个结构.

我在这里找到了代码存根:https://gist.github.com/r-lyeh/cc50bbed16759a99a226.我想这不保证是正确的甚至是工作.

c++ volatile while-loop

34
推荐指数
4
解决办法
4715
查看次数

CMake的CUDA编译问题

我在使用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)

c++ cuda cmake c++11

15
推荐指数
3
解决办法
1万
查看次数

检查多维numpy数组的所有边是否都是零数组

一个 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)

python numpy

13
推荐指数
2
解决办法
2034
查看次数

OpenCV中的阈值RGB图像

我有一个彩色图像,我想在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实现这一目标?

opencv

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

根据索引初始化NumPy数组

我正在使用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)

python numpy matrix python-itertools python-3.x

11
推荐指数
2
解决办法
649
查看次数

numpy:在true_divide中遇到无效值

我有两个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)

python arrays numpy

10
推荐指数
2
解决办法
4万
查看次数

numpy:访问不在给定索引列表中的数组元素

我有一个形状为(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).

python numpy

9
推荐指数
3
解决办法
7384
查看次数

在python中获取原始数据类型的大小

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++中的运算符)

python

8
推荐指数
2
解决办法
3275
查看次数

根据最大值过滤numpy数组

我有一个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)

python arrays numpy

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

特征:从向量中减去标量

我在使用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)

c++ eigen

7
推荐指数
2
解决办法
9121
查看次数