Where函数在含char和number的numpy矩阵上的应用

8xiog9wr  于 2023-01-26  发布在  其他
关注(0)|答案(2)|浏览(103)
a = np.array([a,b,1,2,1,1])

我想将某些数字转换为字符。(1 -〉k)结果如下

[a,b,k,2,k,k]

我写了代码

a = np.where((a == 1), 'k', a)

但是我不能对字符和数字的混合使用where函数。我怎么使用where函数呢?

3lxsmp7m

3lxsmp7m1#

这适用于对象dtype:

a = np.array(['a','b',1,2,1,1], dtype=object)

np.where((a == 1), 'k', a)

输出:

array(['a', 'b', 'k', 2, 'k', 'k'], dtype=object)
ryoqjall

ryoqjall2#

更改a定义以使其有意义:

In [12]: a = np.array(['a','b',1,2,1,1])
In [13]: a
Out[13]: array(['a', 'b', '1', '2', '1', '1'], dtype='<U21')

这是一个字符串数组-没有数字;记住这一点,很容易更改字符串'1'

In [14]: a=='1'
Out[14]: array([False, False,  True, False,  True,  True])
In [15]: np.where(a=='1', 'k', a)
Out[15]: array(['a', 'b', 'k', '2', 'k', 'k'], dtype='<U21')

或更改“2”:

In [16]: a[a=='2'] = 'k'
In [17]: a
Out[17]: array(['a', 'b', '1', 'k', '1', '1'], dtype='<U21')

你可以切换到对象数据类型数组来保存字符串和数字。但是要小心。在很多方面这样的数组和列表是一样的。

相关问题