繁体   English   中英

Python:用字符串替换数组中的数字

[英]Python: Replace a number in array with a string

我有一个数字数组,根据某些情况,我想将其替换为字符串。 我可以用数字代替它们:

d_sex = rand(10)
d_sex[d_sex > 0.5] = 1
d_sex[d_sex <= 0.5] = 0
d_sex

但是我不能做d_sex[d_sex>0.5] = "F" 我将如何以最pythonic的方式做到这一点? 我会创建一个空的字符串数组吗? 我正在寻找类似于朱莉娅的东西:

d_sex = rand(50)
s_sex = ifelse(d_sex .> 0.5, "M", "F")
[d_sex s_sex]

numpy.where与Julia的ifelse等效:

>>> np.where(d_sex > 0.5, 'M', 'F')
array(['F', 'M', 'M', 'F', 'F', 'M', 'F', 'M', 'F', 'F'], 
  dtype='|S1')

如果您不使用numpy,则map可能是最好的选择

a = [random() for _ in range(10)]
map(lambda x: 'F' if x > .5 else 'M', a)

dtype设置为object ,它将允许您将float替换为以下string

>>> import numpy as np
>>> d_sex = np.random.rand(10).astype('object')
>>> d_sex
array([0.6481844853562397, 0.1369951687351887, 0.4672729496950908,
       0.10511352546752228, 0.3967990781535288, 0.3452032518851482,
       0.34527110292775176, 0.24858258988637605, 0.2890001412667411,
       0.9504476492941463], dtype=object)
>>> d_sex[d_sex>0.5] = 'F'
>>> d_sex[d_sex<=0.5] = 'M'
>>> d_sex
array(['F', 'M', 'M', 'M', 'M', 'M', 'M', 'M', 'M', 'F'], dtype=object)

您可以使用列表解析

a = [0, 1, 0]
b = ['F' if i > 0.5 else 'M' for i in a]

=> ['M', 'F', 'M']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM