使用"如果"用于字符串和使用"按位AND"或"逻辑AND"

时间:2015-10-24 15:00:45

标签: python numpy

我想检查数据集第二列中的字符串是否为磁盘,表格或任何其他内容。

这是名称为X的数据集的一些示例:

16  disk    11  10.29   4.63    30.22 
79  table   11  20.49   60.60   20.22 
17  disk    11  22.17   0.71    10.37 

我使用了以下代码:

def featureMaking(X):

   if  (X[1]=='disk'):            
       print('It is in disk group')
   elif np.logical_or(X[1]=='table', X[1]=='chair'):
       print('table or chair')
   else: 
       print('others')

错误是:

 ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我更改了elif np.logical_or(X [1] ==' table',X [1] ==' chair'):to elif(X [1] == '表' || X [1] =='主席'):但错误存在。你能指导我解决这个问题吗?

即使我忽略eflif并将代码更改为:

def featureMaking(X):

if  (X[1]=='disk'):            
     print('It is in disk group')

else: 
    print('others')

但是我有同样的错误!!!

2 个答案:

答案 0 :(得分:0)

X[1]是您的二维numpy.ndarray X的第二行。如果您想要第二行的第二列,请将其作为X[1,1]访问。

答案 1 :(得分:0)

假设:

>>> a
array([['16', 'disk', '11', '10.29', '4.63', '30.22'],
       ['79', 'table', '11', '20.49', '60.60', '20.22'],
       ['17', 'disk', '11', '22.17', '0.71', '10.37']], 
      dtype='|S5')

您可以使用np.where

>>> rows, cols=np.where(a=='disk')
>>> a[rows]
array([['16', 'disk', '11', '10.29', '4.63', '30.22'],
       ['17', 'disk', '11', '22.17', '0.71', '10.37']], 
      dtype='|S5')

或者:

>>> rows, cols=np.where(a=='table')
>>> a[rows]
array([['79', 'table', '11', '20.49', '60.60', '20.22']], 
      dtype='|S5')