我需要以非常特定的格式生成输出,并且正整数必须在它们前面加上一个加号。我正在使用numpy数组,并尝试了类似的东西:
if(int(P[pnt])>0):
P[pnt] += np.insert(P[pnt-1],0,"+")
但它永远不会将加号作为数字的一部分添加,而是作为一个不同的实例添加..
我也尝试将其保存在另一个文件中然后从那里修改(使用re.sub()
等...)但没有运气:(
我的输出如下:
(+1 2 -4 +5 -3)
(+1 2 3 -5 4)
(+1 2 3 -4 5)
(+1 2 3 4 5)
应该是这样的:
(+1 +2 -4 +5 -3)
(+1 +2 +3 -5 +4)
(+1 +2 +3 -4 +5)
(+1 +2 +3 +4 +5)
如有必要,我可以分享整个代码......
谢谢! :)
答案 0 :(得分:7)
使用.format()
和Python Format mini-language。您需要+
签名选项。
'{:+}'.format(3) # "+3"
'{:+}'.format(-3) # "-3"
可以坚持下去:
a = numpy.array([1, 2, -4, 5, -3])
print '(' + ' '.join('{:+}'.format(n) for n in a)) + ')'
# (+1 +2 -4 +5 -3)
答案 1 :(得分:2)
补充Nick T的回答:
您可以编辑numpy的打印选项,因此每当您打印numpy数组时,都会进行格式化。
In [191]: np.set_printoptions(formatter={'all':lambda x: '{:+}'.format(x)})
In [198]: np.random.random_integers(-5,5,(5,5))
Out[198]:
array([[+2, +2, +2, -4, +0],
[-2, -1, +3, +5, -1],
[-5, -2, -1, -3, +4],
[+1, +3, -5, +3, -4],
[+2, -1, +2, +5, +5]])
'all'
定义了应该使用此格式的类型。 set_printoptions的docstring将告诉您可以在那里设置更具体的格式。
- 'bool'
- 'int'
- 'timedelta' : a `numpy.timedelta64`
- 'datetime' : a `numpy.datetime64`
- 'float'
- 'longfloat' : 128-bit floats
- 'complexfloat'
- 'longcomplexfloat' : composed of two 128-bit floats
- 'numpy_str' : types `numpy.string_` and `numpy.unicode_`
- 'str' : all other strings
Other keys that can be used to set a group of types at once are::
- 'all' : sets all types
- 'int_kind' : sets 'int'
- 'float_kind' : sets 'float' and 'longfloat'
- 'complex_kind' : sets 'complexfloat' and 'longcomplexfloat'
- 'str_kind' : sets 'str' and 'numpystr'
答案 2 :(得分:0)
我不在我可以测试它的环境中,但是numpy.insert应该沿着轴插入对象,在你选择的那个之前追加一个新的索引/值。
在条件语句中,真实结果可以将P [pnt]设置为等于'+'+ str(P [pnt])。你到底在寻找一系列字符串,是吗?