我是python中的新手。
我有一个包含1000
行和25
列的h2o框架表,我想将此表转换为numpy数组并重新转换为(5,5)
我使用了这段代码:
mynarray=np.array([np.array(nrows).astype(np.float32).reshape(5,5) for nrows in myh2oframe])
我收到的错误是无法将大小为1604的序列复制到维度为1的数组轴
答案 0 :(得分:1)
首先我要澄清一点。您无法将1000 x 25
数组重新整形为5 x 5
数组。原始数据和重新整形数组中的元素数必须相同。
从您的代码中,看起来您正在尝试使用1 x 25
将h2o帧的每一行重新整形为5 x 5
numpy数组,这应该会产生1000 x 5 x 5
数组,因为有1000行。下面是一个示例,您可以修改/应用它到您的特定情况。
import h2o
import numpy as np
# initialize h2o
h2o.init()
# create a (1000, 25) h2o frame with real values (no missing values)
hf = h2o.create_frame(rows=1000, cols=25, real_fraction=1, missing_fraction=0)
# First convert to a pandas df, then to a numpy array
num_array = hf.as_data_frame().as_matrix()
# Reshape the array
reshaped_array = num_array.reshape(1000, 25, 25)
# Check the dimensions of the reshaped array
reshaped_array.shape
# The output should be: (1000, 5, 5)
希望这有助于解决您的问题。
答案 1 :(得分:-1)
如果它是(1X1)h2o数据帧,那么展平工作
$ y_pred = reg.predict(df_h2o)
$ y_pred
65.4295
[1行x 1列]
$ y_pred.flatten()
65.42946292877197