我得到了以下数组:
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']]
我该怎么做?
答案 0 :(得分:1)
您可以将numpy.where与numpy.column_stack结合使用:
import numpy as np
arr = np.array([['A', 0.05],
['B', 0.09],
['C', 0.13]])
col = np.where(arr[:, 1].astype(np.float) > 0.10, '2', '1')
arr = np.column_stack((arr, col))
print(arr)
输出
[['A' '0.05' '1']
['B' '0.09' '1']
['C' '0.13' '2']]
更新
如果标签有两个以上,则可以执行以下操作:
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)
输出
[['A' '0.05' '1']
['B' '0.09' '2']
['C' '0.13' '3']]