[英]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.