什麼是model
?從什麼模塊?它看起來像predictions
是一個二維數組。什麼是predictions.shape
?該錯誤表明在[x for x in predictions]
是一個數組。它可能是一個單一的元素數組,但它永遠不會是一個數組。您可以嘗試[x.shape for x in predictions]
查看每個元素(行)predictions
的形狀。
我沒有太多機會使用round
,但顯然Python函數代表作用的.__round__
方法(多+
委託給__add__
)。
In [932]: round?
Docstring:
round(number[, ndigits]) -> number
Round a number to a given precision in decimal digits (default 0 digits).
This returns an int when called with one argument, otherwise the
same type as the number. ndigits may be negative.
Type: builtin_function_or_method
In [933]: x=12.34
In [934]: x.__round__?
Docstring:
Return the Integral closest to x, rounding half toward even.
When an argument is passed, work like built-in round(x, ndigits).
Type: builtin_function_or_method
In [935]: y=12
In [936]: y.__round__?
Docstring:
Rounding an Integral returns itself.
Rounding with an ndigits argument also returns an integer.
Type: builtin_function_or_method
Python整數與python浮點數有不同的實現。
Python列表和字符串沒有爲此定義,所以round([1,2,3])
將返回一個AttributeError: 'list' object has no attribute '__round__'
。
同樣爲ndarray
。但是numpy
定義了np.round
函數,而numpy數組具有.round
方法。
In [942]: np.array([1.23,3,34.34]).round()
Out[942]: array([ 1., 3., 34.])
In [943]: np.round(np.array([1.23,3,34.34]))
Out[943]: array([ 1., 3., 34.])
help(np.around)
給出的numpy的版本(S)的最大文檔。
===================
從你最後一次打印,我可以重建你的predictions
的一部分:
In [955]: arr = np.array([[ 0.79361773], [ 0.10443521], [ 0.90862566]])
In [956]: arr
Out[956]:
array([[ 0.79361773],
[ 0.10443521],
[ 0.90862566]])
In [957]: for x in arr:
...: print(x, end=' ')
...:
[ 0.79361773] [ 0.10443521] [ 0.90862566]
arr.shape
是(3,1)
- 具有1列的2d陣列。
np.round
正常工作,而無需迭代:
In [958]: np.round(arr)
Out[958]:
array([[ 1.],
[ 0.],
[ 1.]])
迭代產生的錯誤。
In [959]: [round(x) for x in arr]
TypeError: type numpy.ndarray doesn't define __round__ method
我認爲'predictions'是一個二維數組,可能與形狀(11,1)。 – hpaulj