Python 通过if语句为每行分配标签
我得到了以下数组:Python 通过if语句为每行分配标签,python,python-3.x,windows,row,Python,Python 3.x,Windows,Row,我得到了以下数组: array([['A', 0.05], ['B', 0.09], ['C', 0.13]] 我想创建一个新列,并根据第二列为项目a、B和C指定一个标签。 如果项目高于0.10,则必须获得标签“2”。如果低于0.10,则必须获得标签“1”。因此,我期望的输出是: array([['A', 0.05,'1'], ['B', 0.09,'1'], ['C', 0.13,'2']] 如何才能做到这一点?您可以结合使用:
array([['A', 0.05],
['B', 0.09],
['C', 0.13]]
我想创建一个新列,并根据第二列为项目a、B和C指定一个标签。
如果项目高于0.10,则必须获得标签“2”。如果低于0.10,则必须获得标签“1”。因此,我期望的输出是:
array([['A', 0.05,'1'],
['B', 0.09,'1'],
['C', 0.13,'2']]
如何才能做到这一点?您可以结合使用:
输出
[['A' '0.05' '1']
['B' '0.09' '1']
['C' '0.13' '2']]
[['A' '0.05' '1']
['B' '0.09' '2']
['C' '0.13' '3']]
更新
如果有两个以上的标签,可以执行以下操作:
import numpy as np
arr = np.array([['A', 0.05],
['B', 0.09],
['C', 0.13]])
def calc(x):
if x < 0.08:
return '1'
elif 0.08 <= x < 0.10:
return '2'
elif 0.10 < x:
return '3'
col = np.array([calc(e) for e in arr[:, 1].astype(np.float)])
arr = np.column_stack((arr, col))
print(arr)
那是numpy阵列吗?谢谢!当我想上3节课时,我该怎么办;如果A、B或C低于0.08,则它必须得到标签“1”,如果它高于0.10,则它必须得到标签“3”,而介于两者之间的所有内容都必须得到标签“2”?我建议创建一个函数,将间隔映射到标签,并将其应用到数组中的每个元素。我现在这样做了:我的函数称为“calc(x)”,其中x是0.05、0.09等的值,但我很难将其添加到您提供的代码中。有什么建议吗?@StevenPauly更新了答案,包含了两个以上标签的解决方案。谢谢!!现在一切都有意义了
[['A' '0.05' '1']
['B' '0.09' '2']
['C' '0.13' '3']]