2017-04-16 180 views
0

我想强制下面的特征向量矩阵的值为float32类型以节省内存空间而不是使用float64。但是,似乎我在eigenvectors.astype(np.float32)以下的方式不起作用。有没有解决这个问题的方法?将Numpy矩阵值转换为float32

import networkx as nx 
G = nx.Graph(edges) 
L = nx.laplacian_matrix(G) 
eigenvalues, eigenvectors.astype(np.float32) = np.linalg.eig(L.todense()) 

回答

0

np.linalg.eig函数返回相同dtype作为其参数的阵列。

所以,你有两个选择:

  1. 尝试np.linalg.eig(L.todense().astype(np.float32))。 (这可能会溢出)
  2. 稍后转换特征向量。

第二个方案是这样的:

eigenvalues, eigenvectors = np.linalg.eig(L.todense()) 
eigenvectors = eigenvectors.astype(np.float32) 
+0

非常感谢你。 – Michael