在Python中,如何在int之前添加加号?
我需要以非常特定的格式生成输出,正整数前面必须有一个加号。我正在使用numpy数组,并尝试了以下内容:在Python中,如何在int之前添加加号?,python,arrays,numpy,Python,Arrays,Numpy,我需要以非常特定的格式生成输出,正整数前面必须有一个加号。我正在使用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
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)
应该是这样的:
(+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)
我可以分享整个代码,如果必要的话
谢谢!!:)使用.format()
和。您需要+
符号选项
可能会发疯:
a = numpy.array([1, 2, -4, 5, -3])
print '(' + ' '.join('{:+}'.format(n) for n in a)) + ')'
# (+1 +2 -4 +5 -3)
使用.format()
和。您需要+
符号选项
可能会发疯:
a = numpy.array([1, 2, -4, 5, -3])
print '(' + ' '.join('{:+}'.format(n) for n in a)) + ')'
# (+1 +2 -4 +5 -3)
我不是在一个可以测试它的环境中,而是应该沿着一个轴插入对象,在选择的索引/值之前附加一个新的索引/值
相反,在条件语句中,真实结果可以将p[pnt]设置为“+”+str(p[pnt])。你在寻找最后的字符串数组,是吗 我不在可以测试它的环境中,但应该沿轴插入对象,在选择的索引/值之前附加新的索引/值
相反,在条件语句中,真实结果可以将p[pnt]设置为“+”+str(p[pnt])。你在寻找最后的字符串数组,是吗 补充尼克·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_printpoptions的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'
补充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_printpoptions的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'
非常感谢你!但当我尝试这样做时,我得到了以下错误:ValueError:字符串格式说明符中不允许使用符号。如果我尝试将数组变量强制转换为int,那么它根本没有任何作用。我猜,因为我从文件中读取这些值,它认为这些值是字符串?或者可能是因为我的输入中有“+”和“-”,是的,您可能将数据类型作为字符串。因此需要转换数组的数据类型。这应该可以做到:
a=a.astype(int)
,或者您可以在创建数组时设置数据类型。非常感谢!但当我尝试这样做时,我得到了以下错误:ValueError:字符串格式说明符中不允许使用符号。如果我尝试将数组变量强制转换为int,那么它根本没有任何作用。我猜,因为我从文件中读取这些值,它认为这些值是字符串?或者可能是因为我的输入中有“+”和“-”,是的,您可能将数据类型作为字符串。因此需要转换数组的数据类型。这应该可以做到:a=a.astype(int)
,或者您可以在创建数组时设置数据类型。谢谢!!这是一个很好的暗示!不幸的是,正如我上面提到的,我一直遇到这样的错误:ValueError:字符串格式说明符中不允许使用符号。有什么建议吗?谢谢!!这是一个很好的暗示!不幸的是,正如我上面提到的,我一直遇到这样的错误:ValueError:字符串格式说明符中不允许使用符号。有什么建议吗?