如何用ljust有条件地修改numpy数组字符串?

时间:2017-06-29 22:37:28

标签: python arrays python-2.7 numpy

基本上,我有一个二进制字符串,假设'01111111',如果第一个字符是'0',那么我将保持原样。否则,如果第一个字符是'1',那么我会将其设置为'hi######'

但问题是,如果我尝试:

for x in np.nditer(array, op_flags=['readwrite']):
       if x.ljust(1) == '1':

然后它不起作用,因为numpy不允许元素化ljust。

这有什么解决方法吗? 如果我把它发布在错误的地方,请提前致谢并道歉!

2 个答案:

答案 0 :(得分:0)

为什么不呢:

if str[0] == '1':
    str = "hi######"
print(str)

答案 1 :(得分:0)

包含字符串的数组:

In [428]: arr = np.array([ '01111111' , '10101111' , '01011111' , '1111111' ])

np.char有一些函数将字符串方法应用于这样一个数组的元素:

In [449]: np.char.ljust(arr,10)
Out[449]: 
array(['01111111  ', '10101111  ', '01011111  ', '1111111   '], 
      dtype='<U10')

包括测试方法

In [430]: np.char.startswith(arr,'1')
Out[430]: array([False,  True, False,  True], dtype=bool)

我们可以用它作为掩码来选择性地替换某些元素:

In [433]: arr[np.char.startswith(arr,'1')]='hi#####'
In [434]: arr
Out[434]: 
array(['01111111', 'hi#####', '01011111', 'hi#####'], 
      dtype='<U8')