小编use*_*869的帖子

scipy.linalg.eig返回协方差矩阵的复特征值?

协方差矩阵的特征值应该是实数和非负的,因为协方差矩阵是对称的和半正定的.

但是,请看scipy的以下实验:

>>> a=np.random.random(5)
>>> b=np.random.random(5)
>>> ab = np.vstack((a,b)).T
>>> C=np.cov(ab)
>>> eig(C)
7.90174997e-01 +0.00000000e+00j,
2.38344473e-17 +6.15983679e-17j,
2.38344473e-17 -6.15983679e-17j,
-1.76100435e-17 +0.00000000e+00j,   
5.42658040e-33 +0.00000000e+00j
Run Code Online (Sandbox Code Playgroud)

但是,在Matlab中重现上面的例子可以正常工作:

a = [0.6271, 0.4314, 0.3453, 0.8073, 0.9739]
b = [0.1924, 0.3680, 0.0568, 0.1831, 0.0176]
C=cov([a;b])
eig(C)
-0.0000
-0.0000
 0.0000
 0.0000
 0.7902
Run Code Online (Sandbox Code Playgroud)

python matlab numpy linear-algebra scipy

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

逐行运行python源代码

给定一个Python源代码,是否可以逐行运行代码,就好像你在调试一样?

当谈到函数调用时,我也想"进入"函数.

python

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

python:类属性和实例属性

我是python的新手,并且知道类属性就像C++中的静态数据成员一样.但是,在尝试以下代码后我感到困惑:

>>> class Foo:
...     a=1
... 
>>> f1=Foo();
>>> f2=Foo()
>>> f1.a
1
>>> f1.a=5
>>> f1.a
5
>>> f2.a
1
Run Code Online (Sandbox Code Playgroud)

f2.a也不应该等于5吗?

如果a被定义为列表而不是整数,则行为是预期的:

>>> class Foo:
...     a=[]
... 
>>> f1=Foo();
>>> f2=Foo()
>>> f1.a
[]
>>> f1.a.append(5)
>>> f1.a
[5]
>>> f2.a
[5]
Run Code Online (Sandbox Code Playgroud)

我看了 Python:类和实例属性之间的区别,但它没有回答我的问题.

谁能解释为什么会有区别?谢谢

python

6
推荐指数
3
解决办法
3520
查看次数

当我运行使用pyinstaller部署的程序时,"没有名为atexit的模块"

首先,机器运行的是Fedora 13,PyInstaller的版本是1.5.1

生成规范时我确实使用了--onefile.

我在Python解释器中运行'import atexit'时没有任何错误.

这是运行二进制文件的回溯:

Traceback (most recent call last):
File "<string>", line 14, in <module>
File "/home/pyinstaller-1.5.1/iu.py", line 436, in importHook
 mod = _self_doimport(nm, ctx, fqname)
File "/home/pyinstaller-1.5.1/iu.py", line 495, in doimport
 mod = importfunc(nm)
File "/home/pyinstaller-1.5.1/iu.py", line 297, in getmod
 mod = owner.getmod(nm)
File "/home/pyinstaller-1.5.1/archive.py", line 468, in getmod
 return iu.DirOwner.getmod(self, self.prefix+'.'+nm)
File "/home/pyinstaller-1.5.1/iu.py", line 109, in getmod
 mod = imp.load_module(nm, fp, attempt, (ext, mode, typ))
File "/home/pyinstaller-1.5.1/iu.py", line 436, in importHook
 mod = _self_doimport(nm, ctx, fqname) …
Run Code Online (Sandbox Code Playgroud)

pyinstaller

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

对 '__gthrw___pthread_key_create(unsigned int*, void (*)(void*)) 的未定义引用

我使用 64 位 gcc-4.8.2 生成 32 位目标,而我的机器是 64 位。我正在使用 c++11 并发功能,例如线程、互斥体、conditiona_variables 等。

尝试链接可执行文件时,链接器给出了上述错误消息。libMyLib 也是该项目的一部分。

libMyLib.so: undefined reference to '__gthrw___pthread_key_create(unsigned int*, void (*)(void*))
Run Code Online (Sandbox Code Playgroud)

nm libMyLib.so | grep pthread_key_create 显示:

U _ZL28__gthrw___pthread_key_createPjPFvPvE
w __pthread_key_create@@GLIBC_2.0
Run Code Online (Sandbox Code Playgroud)

符号“ghtrw___pthread_key_create”来自哪里?我尝试添加“-lpthread(-pthread)”作为编译器标志,但它没有帮助。

更多信息。nm libMyLib.so | grep pthread 显示其他符号如 _ZL20__gthread_mutex_lockP15pthread_mutex_t 已定义

gcc opensuse c++11 gcc4.8

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

python:将`_dict__`添加到`__slots__`是什么意思

重点__slots__是节省空间.

但是我看到人们添加__dict__它以便可以添加新属性.这不是打败了目标__slots__吗?

python

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

numpy中'*'的含义是什么?

>>> shape=(2,2)
>>> np.random.randn(*shape)
array([[-1.64633649, -0.03132273],
   [-0.92331459,  1.05325462]])
Run Code Online (Sandbox Code Playgroud)

我在numpy的文档中找不到它.任何帮助表示赞赏.

python numpy

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

CONEGICT_FREE_OFFSET宏用于GPU Gems 3的并行前缀算法

首先,这里是算法的链接http://http.developer.nvidia.com/GPUGems3/gpugems3_ch39.html

为了避免存储体冲突,每个NUM_BANKS(即,对于可计算性2.x的设备为32)元素将填充添加到共享存储器阵列.这是通过(如图39-5)完成的:

int ai = offset*(2*thid+1)-1
int bi = offset*(2*thid+2)-1
ai += ai/NUM_BANKS
bi += ai/NUM_BANKS
temp[bi] += temp[ai]
Run Code Online (Sandbox Code Playgroud)

我不明白ai/NUM_BANKS是如何与宏等效的:

   #define NUM_BANKS 16  
   #define LOG_NUM_BANKS 4  
   #define CONFLICT_FREE_OFFSET(n) \  
          ((n) >> NUM_BANKS + (n) >> (2 * LOG_NUM_BANKS))  
Run Code Online (Sandbox Code Playgroud)

不等于

n >> LOG_NUM_BANKS
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.谢谢

cuda prefix-sum

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

调用std矢量指针的调整大小崩溃

使用VS 2013 Express可以重现该问题.当内部向量实现试图释放原始向量时,它崩溃了.

但是,使用'new'而不是'malloc'可以解决问题.

任何人都可以对此有所了解吗?

struct UndirectedGraphNode {
   int label;
   vector<UndirectedGraphNode *> neighbors;
   UndirectedGraphNode(int x) : label(x) {};
};

int main(int argc, char** argv)
{
    UndirectedGraphNode* node1 = (UndirectedGraphNode*)malloc(sizeof(UndirectedGraphNode));
    node1->label = 0;
    node1->neighbors.resize(2); 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ stl

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

将32位指针转换为64位整数

最好的方法是什么?

说我有:

 void* p = 0xc8f68000;
 unsigned long long v = (unsigned long long)p;
Run Code Online (Sandbox Code Playgroud)

我得到v = 0xffffffffc8f68000而不是0x00000000c8f68000.我必须使用班次吗?

c

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

标签 统计

python ×5

numpy ×2

c ×1

c++ ×1

c++11 ×1

cuda ×1

gcc ×1

gcc4.8 ×1

linear-algebra ×1

matlab ×1

opensuse ×1

prefix-sum ×1

pyinstaller ×1

scipy ×1

stl ×1