python - 如何从一个 numpy float 组创建一个 numpy 标签数组?

标签 python python-3.x numpy

比如我有

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/

相关文章:

python - 基于列表在python numpy中排列数据的最快方法

python - Coverage.py 中的 "No source for code"消息

Python tkinter 时间.sleep()

python - 在 Python 中将数组与其自身网格化 n 次

python - `Itertools.cycle` : most pythonic way to take multiple steps?

python - Pandas 绘制 'group by' 结果的子图

python - 有没有比 `except: pass` 更简洁的替代品?

python - 如何强制 Traits View 对象的状态栏属性更新/重绘自身?

c++ - 从python3客户端向cpp服务器发送垃圾

python - 替换所有高于阈值的 RGB 值