Numpy.around()将ndarray len 45转换为ndarray len 1

时间:2019-03-16 16:29:20

标签: python numpy

我有这个ndarray

>>> y_pred_test=[1.         3.         1.986      1.         1.79266667 1.048
 1.         3.         2.         2.         3.         3.
 1.         1.976      3.         2.         1.         1.
 2.03       1.         1.976      1.16966667 1.06       2.
 2.         2.         2.         2.         2.02       3.
 1.         1.         2.02       1.02       1.         1.12511111
 3.         2.07       2.         3.         1.24177778 1.
 2.         2.         2.        ]

>>> type(y_pred_test)

numpy.ndarray

>>> len(y_pred_test)

45

并且需要四舍五入,所以我使用np.around

>>> np.around([y_pred_test], decimals=0, out=y_pred_test_round[:,])

>>> print(y_pred_test_round)`

[[1. 3. 2. 1. 2. 1. 1. 3. 2. 2. 3. 3. 1. 2. 3. 2. 1. 1. 2. 1. 2. 1. 1. 2.
  2. 2. 2. 2. 2. 3. 1. 1. 2. 1. 1. 1. 3. 2. 2. 3. 1. 1. 2. 2. 2.]]

但是问题是,现在我有一个len为len的ndarray

>>> type(y_pred_test_round)

numpy.ndarray

>>> len(y_pred_test_round)

1

我也尝试过

for i in range(len(y_pred_test)):
    np.around([y_pred_test], decimals=0, out=y_pred_test_round[:,i])

并得到此错误

ValueError: non-broadcastable output operand with shape (45,) doesn't match the broadcast shape (1,45)

我找不到解决方法,有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

更改

np.around([y_pred_test], decimals=0, out=y_pred_test_round[:,])

np.around(y_pred_test, decimals=0, out=y_pred_test_round[:,])

在您的情况下,您无需将y_pred_test放入[]

答案 1 :(得分:0)

非常感谢,终于我以这种方式解决了

y_pred_test_round = np.around(y_pred_test, decimals=0) print(y_pred_test_round)

[1。 3. 2. 1. 2. 1. 1. 3. 3. 2. 2. 3. 3. 1. 2. 3. 2. 1. 1. 2. 1. 2. 1. 1. 1. 2。  2. 2. 2. 2. 2. 3. 3. 1. 1. 2. 1. 1. 1. 3. 3. 2. 2. 3. 1. 1. 2. 2. 2。]

len(y_pred_test_round)

45