python-3.x 平移nd阵列

gfttwv5a  于 2023-03-04  发布在  Python
关注(0)|答案(1)|浏览(147)

在python中,我有一个如下的nd数组:

0 0 1
1 0 1
0 1 1
0 0 0

我知道第一个位置是“a”,第二个位置是“B”,以此类推。
我如何将“一”转换为“as”,“bs”,...?
还没有,毫无头绪.

jm81lzqq

jm81lzqq1#

我相信你可能想使用数组索引:

a = np.array([[0,0,1],
              [1,0,1],
              [0,1,1],
              [0,0,0]])

out = np.array(['a', 'b'])[a]

输出:

array([['a', 'a', 'b'],
       ['b', 'a', 'b'],
       ['a', 'b', 'b'],
       ['a', 'a', 'a']], dtype='<U1')
将连续的1替换为a/b/c ...
from string import ascii_lowercase

out = np.r_[[' '], list(ascii_lowercase)
            ][np.where(a.ravel(), a.cumsum(), 0).reshape(a.shape)]

输出:

array([[' ', ' ', 'a'],
       ['b', ' ', 'c'],
       [' ', 'd', 'e'],
       [' ', ' ', ' ']], dtype='<U1')

相关问题