【问题标题】:How to replace a value in array in numpy python如何在numpy python中替换数组中的值
【发布时间】:2017-08-16 21:21:40
【问题描述】:

我在 numpy 数组中有一个非常基本的问题:

我的数组看起来像这样:

Array = [["id1", "1.0"],["id2", "0.0"]] 

我想读取数组的第二个元素并替换为另一个字符。就像

for i in range(0,len(array)):
    if array[i] == "0.0":
        array[i] = "ClassA"
    else
        array[i] = "ClassB"

如何实现这一点。我无法正确读取“0.0”或“1.0”。 请帮忙。

【问题讨论】:

  • 为什么是numpy 标签?这些不是numpy 数组。
  • @hiroprotagonist - 如果是这种情况,我很抱歉,元素类型是 numpy.ndarray。这和numpy数组不同吗?并检查元素的 dtype - 它是“str18912”。
  • ["id1" "1.0"] 他们之间没有逗号吗??
  • @PrakashPalnati - 感谢您指出错误。我已经更新了问题。

标签: python numpy


【解决方案1】:

一个数组中有两个数组。下面的代码应该可以工作:

array = [["id1", "1.0"],["id2", "0.0"]]

for item in array:
    if item[1] == "0.0":
        item[1] = "ClassA"
    else:
        item[1] = "ClassB"

【讨论】:

    【解决方案2】:

    您的数组定义中缺少,s。您的数组与此相同:[["id11.0"], ["id20.0"]](字符串只是连接起来)。如果您的数组是numpy 数组,那么这就是它们的表示(打印)方式。但这不能作为输入...

    从您的代码开始,您可以这样做:

    array = [["id1", "1.0"], ["id2", "0.0"]]
    
    for i, (id_, number) in enumerate(array):
        if number == "0.0":
            array[i] = [id_, "ClassA"]
        else:
            array[i] = [id_, "ClassB"]
    

    或者,更优雅,使用列表理解:

    array = [[id_, "ClassA"] if number == "0.0" else [id_, "ClassB"]  
             for id_, number in array ]
    

    【讨论】:

    • Protagnoistn - 非常感谢您的回复。这也对我有用。
    猜你喜欢
    • 2013-09-11
    • 2018-01-25
    • 2019-08-05
    • 2019-09-26
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    相关资源
    最近更新 更多