获取数组对象的数组,需要序列的数组



我的目标数组看起来像这样:

array([[[0.77777778],
[0.77777778],
[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333]],
[[0.77777778],
[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333]],
[[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.77777778]]])

我正在接收以下数组:

array([array([[0.77777778],
[0.77777778],
[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333]]),
array([[0.77777778],
[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333]]),
array([[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.77777778]])], dtype=object)

我可以做什么样的数据操作来实现这一点?

由于某种原因,Google Colab将序列正确地附加到第一个数组,然后为第二个数组创建数组对象的数组,创建数组的代码是相同的。它把第二个数组当作我运行了np。分割生成一个数组对象的数组。

下面是生成上述数组的代码:
def walk_forward_train(X, stepsBack, stepsForward, trainTestSplit):
n_records = len(X)
X = X[:]
split = int(n_records*trainTestSplit-stepsForward)
x = []
y = []
for i in range(n_records):
x.append(X[i : i + stepsBack])  
y.append(X[i + stepsBack : i + stepsBack + stepsForward])
xtrain = x[:split]
ytrain = y[:split]
xtest = x[: n_records - stepsForward]
ytest = y[: n_records - stepsForward]

return np.asarray(xtrain), np.asarray(ytrain), np.asarray(xtest), np.asarray(ytest)

编辑:这里有一个链接,我做了一个Github重建这个问题:https://github.com/Crayfi/Datasets

your_old_array = array([array([[0.77777778],
[0.77777778],
[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333]]),
array([[0.77777778],
[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333]]),
array([[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.77777778]])], dtype=object)
req_array = your_old_array.astype(np.float64)

Try

np.asarray(your_old_array)

输出:

array([[[0.77777778],
[0.77777778],
[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333]],
[[0.77777778],
[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333]],
[[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.77777778]]], dtype=object)

注意确保copy-n-paste生成一个包含3个元素的对象数组:

In [383]: array=np.array
In [384]: list=[array([[0.77777778],
...:        [0.77777778],
...:        [0.77777778],
...:        [0.83333333],
...:        [0.83333333],
...:        [0.83333333],
...:        [0.83333333]]),
...:        array([[0.77777778],
...:        [0.77777778],
...:        [0.83333333],
...:        [0.83333333],
...:        [0.83333333],
...:        [0.83333333],
...:        [0.83333333]]),
...:        array([[0.77777778],
...:        [0.83333333],
...:        [0.83333333],
...:        [0.83333333],
...:        [0.83333333],
...:        [0.83333333],
...:        [0.77777778]])]

创建一个包含3个元素的对象数组,并从列表中填充它:

In [385]: arr = np.empty(3,object)
In [386]: arr[:] = list
In [387]: arr
Out[387]: 
array([array([[0.77777778],
[0.77777778],
[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333]]), 
array([[0.77777778],
[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333]]),
array([[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.77777778]])], dtype=object)

这是一个一维数组,所有元素数组的形状相同。stack将工作:

In [388]: np.stack(arr)
Out[388]: 
array([[[0.77777778],
[0.77777778],
[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333]],
[[0.77777778],
[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333]],
[[0.77777778],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.83333333],
[0.77777778]]])

如果stack不像这样工作,那么您没有向我们展示真正的数组。事实上,我看了看笔记本,你只显示了[:3],没有显示告诉我们。你试图把它当作整个数组来传递!

从笔记本显示器复制:

In [41]:
np.array(X_test)[:3]
/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:1: VisibleDeprecationWarning: 
Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or 
ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 
'dtype=object' when creating the ndarray
"""Entry point for launching an IPython kernel.

这就是我一直想告诉你的,X_test中的数组并不都具有相同的形状。

你用三个不完整的问题浪费了我们和你的时间!

相关内容

  • 没有找到相关文章

最新更新