使用Numpy查找值和upd

2024-09-30 18:30:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,我希望找到一个值使用numpy和更新它的邻居值在一个二维数组

myList = np.array([['kim' '0'],
    ['jong' '0'],
    ['un' '0'],
    ['is' '0'],
    ['here' '1']])

np.where(myList == 'is')// some operation to update from '0' to '1'. Please help

结果

['kim' '0'],
['jong' '0'],
['un' '0'],
['is' '1'],
['here' '1']

Tags: tonumpy列表hereisnpsome数组
2条回答

您定义数组的方式是完全错误的。我猜你想要一份名单。但是['kim' '0']不是有效的列表,因为元素之间缺少逗号。解决这个问题,你想怎么做就怎么做

也就是说,如果您的列表总是只包含2个元素,请考虑使用dict

>>> myList = np.array([['kim', '0'],
...     ['jong', '0'],
...     ['un', '0'],
...     ['is', '0'],
...     ['here', '1']])
>>> row = np.where(myList[:,0] == 'is')
>>> myList[row, 1] = 1
>>> myList
array([['kim', '0'],
       ['jong', '0'],
       ['un', '0'],
       ['is', '1'],
       ['here', '1']], dtype='<U4')
>>> 

您的数组当前“不是真正的2D”,因为['kim' '0']将被计算为['kim0'](要检查这一点,请访问myList[0])。另外,您可以将数字初始化为字符串('0',而不是简单地0

如果正确地进行初始化,则会得到如下结果:

myList = np.array([['kim', 0],
    ['jong', 0],
    ['un', 0],
    ['is', 0],
    ['here', 1]])

那么你的操作已经(几乎是正确的)。现在只需查看包含where条件的单词的列:

selector = np.where(myList[:,0] == "is") # look for the word only in the first column

最后更改值:

myList[selector, 1] = 1 # access the "value column"

如果您想增加值,只需执行+=1 instead of = 1,或者您甚至可以坚持使用字符串格式的值(不过,要注意初始化;您仍然需要逗号),然后改为赋值'1'

相关问题 更多 >