【问题标题】:Replacing values in numpy ndarray替换numpy ndarray中的值
【发布时间】:2017-10-16 01:49:16
【问题描述】:

我有一个非常大的列表列表,其中包含 numpy ndarrays,我需要将字母映射到整数值。

这与我认为可能有效的方式一致,但它似乎并没有捕获所有数组。

import numpy as np

x = [np.array(['a','b','c']),np.array(['d','e']),np.array(['a','e'])]
dict_x = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e':5}

x[ x == 'a'] = dict_x.get('a')

Output: [1, array(['d', 'e'], 
  dtype='<U1'), array(['a', 'e'], 
  dtype='<U1')]

我还尝试遍历所有键以将它们一一替换为以下内容

for i in dict_x.keys():
    x[ x == i] = dict_x.get(i)

但这会返回,我认为这是有道理的。任何人都有任何聪明的方法来一次和在所有情况下替换所有这些值?非常感谢!

[5, array(['d', 'e'], 
  dtype='<U1'), array(['a', 'e'], 
  dtype='<U1')]

【问题讨论】:

    标签: python arrays numpy dictionary


    【解决方案1】:

    你可以试试这个:

    x = [np.array(['a','b','c'], dtype="<U4"),np.array(['d','e'], dtype="<U4"),np.array(['a','e'], dtype="<U4")]
    dict_x = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e':5}
    
    for i in x:
        i[ i == 'a'] = dict_x.get('a')
    
    x = array(['1', 'b', 'c'],
          dtype='<U1'), array(['d', 'e'],
          dtype='<U1'), array(['1', 'e'],
          dtype='<U1')]
    

    【讨论】:

    • 是的 - 完全正确。我只是做了一个循环,将字典中的所有键作为外循环循环,然后将你的键作为内循环,并带有一个变量来表示“a”所在的位置。我希望一次性替换所有,但我认为仍然应该是 O(n),所以我猜没有害处,对吧?谢谢!
    • 我刚刚发现这会将数字截断为一位数。所以,1000 读作 1。有什么想法吗?
    • 因为array的dtype是'x = [np.array(['a','b','c'], dtype="<U4"), np.array(['d','e']),np.array(['a','e'])],那么它就可以正常工作了。
    猜你喜欢
    • 1970-01-01
    • 2019-08-07
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多