为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 中使用布尔值

在 Python 中使用布尔值

手掌心 2022-09-06 21:22:19
我正在尝试将数组中的字符串值替换为数组中位数,但是当我尝试创建布尔值时,我收到错误代码。我有一个包含3个字符串值的定义数组,我尝试输入的代码是:arr2 = np.array ([1,2,3,1,5,2,3,4,2,                  4,1,3,4,1,2,5,3,2,                  1,"?",1,"n",3,2,5,                  1,2,"Nan",3,2,2,4,3])flag_good = [element.isdigit() for element in arr2]flag_bad = ~flag_good但是我在运行该行时收到错误代码:flag_bad = ~flag_good如何用数组的中位数替换 sting 值?
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

波浪号操作是 numpy 的一部分,是 numpy.invert 的快捷方式。


通过使用列表理解,是一个Python列表,它不支持此操作。flag_good


例如,您可以将列表转换为 Numpy 数组,然后使用 invert 函数。flag_good


>>> flag_bad = ~np.array(flag_good)

>>> flag_bad

array([False, False, False, False, False, False, False, False, False,

       False, False, False, False, False, False, False, False, False,

       False,  True, False,  True, False, False, False, False, False,

        True, False, False, False, False, False])

或者,您可以使用矢量化并直接返回Numpy数组,其中函数按元素调用,而不是使用列表推导。


>>> flag_good = np.vectorize(lambda x: x.isdigit())(arr2)

>>> flag_bad = ~flag_good

>>> flag_bad

array([False, False, False, False, False, False, False, False, False,

       False, False, False, False, False, False, False, False, False,

       False,  True, False,  True, False, False, False, False, False,

        True, False, False, False, False, False])


查看完整回答
反对 回复 2022-09-06
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

我觉得你可以从一开始就解决问题,编辑你的列表理解。


flag_bad = [not(element.isdigit()) for element in arr2]


不过,为了回答你的问题,我会这样做:


import numpy as np

input_list = [1,2,3,1,5,2,3,4,2,

                  4,1,3,4,1,2,5,3,2,

                  1,"?",1,"n",3,2,5,

                  1,2,"Nan",3,2,2,4,3]


# calculate the median

median = int(np.median([elt for elt in input_list if type(elt) is int])) 


# replace elements of the list only if you have a non-int 

output_array = np.array([elt if type(elt) is int else median for elt in input_list])

print(output_array)

输出:


[1 2 3 1 5 2 3 4 2 4 1 3 4 1 2 5 3 2 1 2 1 2 3 2 5 1 2 2 3 2 2 4 3]


查看完整回答
反对 回复 2022-09-06
  • 2 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信