相关疑难解决方法(0)

Python中的十进制对齐格式

应该很容易.

这是我的数组(相反,一种生成代表性测试数组的方法):

>>> ri = numpy.random.randint
>>> ri2 = lambda x: ''.join(ri(0,9,x).astype('S'))
>>> a = array([float(ri2(x)+ '.' + ri2(y)) for x,y in ri(1,10,(10,2))])
>>> a
array([  7.99914000e+01,   2.08000000e+01,   3.94000000e+02,
         4.66100000e+03,   5.00000000e+00,   1.72575100e+03,
         3.91500000e+02,   1.90610000e+04,   1.16247000e+04,
         3.53920000e+02])
Run Code Online (Sandbox Code Playgroud)

我想要一个字符串列表,其中'\n'.join(list_o_strings)将打印:

   79.9914
   20.8
  394.0
 4661.0
    5.0
 1725.751
  391.5
19061.0
11624.7
  353.92
Run Code Online (Sandbox Code Playgroud)

我想空间垫的左侧右侧(但没有超过必要的).

如果小数点后面的所有内容,我想在小数点后面加零.

我不想要科学记谱法.

..我不想丢失任何有效数字.(在353.98000000000002中2表示不重要)

是的,很高兴想要..

Python 2.5 %g, %fx.x等等要么迷惑我,要么无法做到.我还没有尝试过import decimal.我看不出NumPy是这样做的(虽然,array.__str__array.__repr__十进制对齐(但有时会返回科学).

哦,速度很重要.我在这里处理大阵列.

我目前的解决方案是:

  1. str(a)和解析NumPy的括号
  2. str(e)数组中的每个元素并拆分('.')然后填充和重建
  3. 到a.astype('S'+ str(i)),其中i是max(len(str(a))),然后填充

似乎应该有一些现成的解决方案......(但不是必需的)

最佳建议失败,何时dtype是float64: …

python formatting numpy code-golf

8
推荐指数
1
解决办法
7921
查看次数

标签 统计

code-golf ×1

formatting ×1

numpy ×1

python ×1