将数组转换为Numpy数组会更改值

时间:2015-11-24 23:56:23

标签: python scikit-learn rdkit

我正在使用RDKit包将一些SMILES转换为指纹。

我的问题,我使用Scikit学习,我想做一个简历。对于CV,我需要np.array数据结构...... 对于某种指纹,我将数据结构转换为0和1的结构。 这只是一个任意的例子

打印x: 一个包含很多的vektor: 0x05E498F0对象的rdkit.DataStructs.cDataStructs.ExplicitBitVect对象将是createt

X = np.array(x)的 print x:将创建1和0的向量。

我不知道为什么numpy数组转换,改变类型?

对于像0x05DDF960这样的对象,如rdkit.DataStructs.cDataStructs.LongSparseIntVect对象 numpy将向量更改为相同的结构。

我只是问,因为从4个指纹中的2个,我得到了这个错误,由于numpy转换:

AttributeError:'numpy.ndarray'对象没有属性'GetNumBits' 用于指纹摩根

from rdkit import DataStructs
from rdkit.Chem.Fingerprints import FingerprintMols
from rdkit.Chem import AllChem
from rdkit import Chem
from rdkit import DataStructs
from rdkit.Chem import MACCSkeys
import numpy as np


ms = [Chem.MolFromSmiles('CCOC'),    Chem.MolFromSmiles('CCO'),Chem.MolFromSmiles('COC')]
fps = [MACCSkeys.GenMACCSKeys(x) for x in ms]
a=DataStructs.FingerprintSimilarity(fps[0],fps[1])


#everything is fine
print fps
print a
# output: [<rdkit.DataStructs.cDataStructs.ExplicitBitVect object at 0x0325CE30>, <rdkit.DataStructs.cDataStructs.ExplicitBitVect object at 0x0325CE68>, <rdkit.DataStructs.cDataStructs.ExplicitBitVect object at 0x0325CEA0>]


#now the error occures

fps=np.array(fps)
print fps

#output: [[0 0 0 0 1 0 1 .....] [1 0 0 0 1...0 1] [1 0 0 .... 1 1]
a=DataStructs.FingerprintSimilarity(fps[0],fps[1])
#AttributeError: 'numpy.ndarray' object has no attribute 'GetNumBits'

DrückenSieeine beliebige Taste。 。 。     print fps

0 个答案:

没有答案