Python:在不改变数组形状的情况下替换数组中的元素
我需要把下面这个数组中的一些字母换成字母'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'