Python:替换数组中的元素而不更改数组形状

时间:2014-03-24 18:20:42

标签: python arrays numpy

我需要用字母' 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'替换let数组中的任何字母。

有一种简单的方法吗?

2 个答案:

答案 0 :(得分:0)

我不清楚你想要完成什么,以及你如何想象事情会变成现实。

你从一个5 X 3阵列开始, 然后你删除一个元素 现在你有14个元素。你想象它会是什么形状?

也许你想直接分配

AA[1,2]='K'

答案 1 :(得分: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'
相关问题