使用 for 循环有条件地更改 numpy 数组的元素

问题描述 投票:0回答:1

我有一个二维 numpy 数组,我想将所有“男性”值更改为 0,将所有“女性”值更改为 1。

如果我尝试将

arr2D[row,element]
分配给特定值, 我收到错误。

我尝试使用下面的代码,但没有得到我的希望 '[[0,0],[1,1]]' 数组我收到错误:

'IndexError:用作索引的数组必须是整数...'

我不知道如何确定我所在元素的索引 在我的 for 循环中查看。

import numpy as np

arr2D = np.array([['male',0],['female',1]])

for row in arr2D:
    for element in row:
        if element == 'male':
                        arr2D[row,element] = 0
        if element == 'female'
            arr2D[row,element] = 1
            
            
for row in arr2D:
    for element in row:
        print(element)
indexing conditional-statements element data-manipulation numpy-ndarray
1个回答
0
投票

我不知道如何确定我在 for 循环中查看的元素的索引。

您可以使用

enumerate

    for index, element in enumerate(row):
        if element ==   'male': row[index] = 0
        if element == 'female': row[index] = 1

但是您也可以使用

numpy.place
:

来避免显式循环
np.place(arr2D, arr2D==  'male', 0)
np.place(arr2D, arr2D=='female', 1)
© www.soinside.com 2019 - 2024. All rights reserved.