要更改值在列表中,你可以使用列表理解。下面的Python 3例子。
import numpy as np
precision = 2
formatter = "{0:."+str(precision)+"f}"
a = np.array([2.15295647e+01, 8.12531501e+00, 3.97113829e+00, 1.00777250e+01])
aFormat = np.array([float(formatter.format(i)) for i in a])
print(a, aFormat)
我第一次嘗試過癲癇魚的選擇,但打印機功能並沒有給你一個數組。它只是給你一個浮動。所以,如果你真的想改變二維numpy矩陣的打印選項,你將不得不用外部計數器來定義你自己的函數,以什麼格式化哪個值。下面的例子顯示了這個類,因爲你不希望外部計數器是全局的。
import numpy
class npPrint(object):
def __init__(self):
self.counter = 0
self.precision = 2
# end Constructor
def printer(self, x):
self.precision = 2
if self.counter == 0:
formatter = "{0:."+str(self.precision)+"f}"
self.counter += 1
else:
formatter = "{0:0"+str(self.precision)+"d}"
x = int(round(x))
self.counter = 0
return formatter.format(x)
# end printer
formatter = npPrint()
a = numpy.array([[2.15295647e+01, 8.12531501e+00], [3.97113829e+00, 1.00777250e+01]])
numpy.set_printoptions(formatter={"float_kind": lambda x, f=formatter: f.printer(x)})
print(a)
你必須有一個計數器,因爲你不知道你是否交給了x值或y值。你只是收到一個浮動。這真的很醜。如果我是你,我會自己處理印刷,並拆分2d矩陣。
問題的後半部分(「2個浮點操作」)似乎並沒有以任何方式進行相關的第一部分。第二部分的輸入是什麼樣的?預期產出是多少? –