比如我有
arr=np.linspace(0,1,11)
我想标记数字 n<0.25
标签 "a"
, n>0.75
标签 "c"
, 标签之间的数字 "b"
.结果会是
array(['a', 'a', 'a', 'b', ..., 'c'])
我试过类似 arr[arr<0.25]='a'
的东西, 但它只会工作一次,因为在下一个命令中会有字符串与 float 进行比较。我可以通过在使用 for 循环进行比较之前检查其类型来实现这一点,但这很复杂。有没有一种直接的方法可以实现这一目标?
最佳答案
NumPy 数组是同构的。您必须为标签数组设置类型
import numpy as np
arr=np.linspace(0,1,11)
lbl=np.empty((arr.shape), dtype=object)
lbl[arr<.25]='a'
lbl[(arr>=.25) & (arr <=.75)] = 'b'
lbl[arr>.75]='c'
print arr
print lbl
输出:
[ 0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ]
['a' 'a' 'a' 'b' 'b' 'b' 'b' 'b' 'c' 'c' 'c']
关于python - 如何从一个 numpy float 组创建一个 numpy 标签数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38435680/