Python:在不改变数组形状的情况下替换数组中的元素

1 投票
2 回答
1942 浏览
提问于 2025-04-17 23:42

我需要把下面这个数组中的一些字母换成字母'K'。但是每次我用numpy.replace然后再用numpy.delete的时候,数组的形状就会改变。有没有办法可以在不改变数组形状的情况下,替换数组中的某个字母呢?

AA = [['A', 'B', 'C']]
AA = np.array(AA)
AA = np.repeat(AA, 5, axis=0)


AA = np.delete(AA, (1))
AA = np.insert(AA, (1), 'K')

我想能够把字母数组中的任何字母替换成'K'。

有没有简单的方法可以做到这一点?

2 个回答

0

如果你想把一个字母的所有出现都替换成另一个字母,可以试试下面的做法:

A = np.array(list('ABC'))
A = np.repeat(A, 5, axis=0)
A[np.where(A == 'A')] = 'K'

这里的numpy函数 numpy.where(A == 'A') 会返回一个索引集合,告诉你在 A 中哪些地方有字母 "A"。然后我们用这些索引来切片 A 数组,并进行重新赋值。更具体地说:

inds = np.where(A == 'A')
A[inds] = 'K'

另外,如果你想选择一个特定的索引(比如数组中的位置1),并把那个字母和所有相同的字母都替换成 'K',你可以这样做:

A = np.array(list('ABC'))
A = np.repeat(A, 5, axis=0)
A[np.where(A == A[1])] = 'K'
0

我不太明白你想要实现什么,以及你想象的结果是什么样的。

你一开始有一个5行3列的数组,

然后你删除了一个元素,

现在你有14个元素。你想象它会是什么形状呢?

也许你想要的是直接赋值。

AA[1,2]='K'

撰写回答