我想检查数据集第二列中的字符串是否为磁盘,表格或任何其他内容。
这是名称为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')
但是我有同样的错误!!!
答案 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')