繁体   English   中英

是否可以将一维ndarray(大小N)放入一维ndarray(大小N,1)

[英]Is it possible to put a 1D ndarray (size N) into 1D ndarray (size N,1)

我试图将微积分的结果放到一个大矩阵中,最后一个维度可以是1或2或更大。 所以把我的结果放在矩阵中

res[i,j,:,:] = y

如果y的大小为(N,2)或大于2,则会找到它,但是如果y的大小为(N),我会收到一条错误消息:

ValueError: could not broadcast input array from shape (10241) into shape (10241,1)

小例子:

import numpy as np

N=10
y = np.zeros((N,2))
res = np.zeros((2,2,N,2))
res[0,0,:,:]= y

y = np.zeros((N,1))
res = np.zeros((2,2,N,1))
res[0,0,:,:]= y

y = np.zeros(N)
res = np.zeros((2,2,N,1))
res[0,0,:,:]= y

我在上一个示例中遇到了错误,但它们都是(y和res)一维矢量,对吗?

我想知道是否存在一种解决方案,无论最后一个尺寸(1、2或更大)如何进行此分配?

在我的代码中,我尝试了一下,但可能存在另一种方式

try:
    self.res[i,j,:,:] = self.ODE_solver(len(self.t))
except:
    self.res[i, j, :, 0] = self.ODE_solver(len(self.t))

对于适用于所有三种情况的通用解决方案,请使用-

res[0,0,:,:] = y.reshape(y.shape[0],-1)

因此,基本上,我们要使y 2D不变,同时保持第一个轴长不变,并根据剩余量更改第二个轴长。

您可以将y重塑为res的最后两个维度。

N=10
y = np.zeros((N,2))
res = np.zeros((2,2,N,2))
res[0,0,:,:]= y.reshape(res.shape[-2:])

y = np.zeros((N,1))
res = np.zeros((2,2,N,1))
res[0,0,:,:]= y.reshape(res.shape[-2:])

y = np.zeros(N)
res = np.zeros((2,2,N,1))
res[0,0,:,:]= y.reshape(res.shape[-2:])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM