协方差矩阵的特征值应该是实数和非负的,因为协方差矩阵是对称的和半正定的.
但是,请看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的新手,并且知道类属性就像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:类和实例属性之间的区别,但它没有回答我的问题.
谁能解释为什么会有区别?谢谢
首先,机器运行的是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) 我使用 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 已定义
重点__slots__是节省空间.
但是我看到人们添加__dict__它以便可以添加新属性.这不是打败了目标__slots__吗?
>>> shape=(2,2)
>>> np.random.randn(*shape)
array([[-1.64633649, -0.03132273],
[-0.92331459, 1.05325462]])
Run Code Online (Sandbox Code Playgroud)
我在numpy的文档中找不到它.任何帮助表示赞赏.
首先,这里是算法的链接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)
任何帮助表示赞赏.谢谢
使用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) 最好的方法是什么?
说我有:
void* p = 0xc8f68000;
unsigned long long v = (unsigned long long)p;
Run Code Online (Sandbox Code Playgroud)
我得到v = 0xffffffffc8f68000而不是0x00000000c8f68000.我必须使用班次吗?