Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将长度不等的数组中的元素复制到另一个数组中?_Python_Arrays - Fatal编程技术网

Python 如何将长度不等的数组中的元素复制到另一个数组中?

Python 如何将长度不等的数组中的元素复制到另一个数组中?,python,arrays,Python,Arrays,我有一个简单的问题要解决,如下所示: import random n=399 x=np.random.randn(n,n) m=400 y=np.zeros((m,m)) 如何在指定位置将元素从x复制到y? 任何帮助都将不胜感激 注意,m和n的值可能会根据图中的节点数而变化您可以将重塑功能与拉威尔结合使用。其想法是将x和y重塑为线性1D阵列,复制所需值并将其转换回原始尺寸 x = x.ravel() y = y.ravel() y[0: len(x)] = x x = x.reshape(n

我有一个简单的问题要解决,如下所示:

import random
n=399
x=np.random.randn(n,n)
m=400
y=np.zeros((m,m))
如何在指定位置将元素从x复制到y? 任何帮助都将不胜感激


注意,m和n的值可能会根据图中的节点数而变化

您可以将
重塑
功能与
拉威尔
结合使用。其想法是将
x
y
重塑为线性
1D
阵列,复制所需值并将其转换回原始尺寸

x = x.ravel()
y = y.ravel()

y[0: len(x)] = x
x = x.reshape(n, n)
y = y.reshape(m, m)
如果我使用的是
n=2
m=3
,结果就是这样

输出

如果您想使用起始
位置
,则只需将其更改为:

x = x.ravel()
y = y.ravel()

position = 2

if len(x) + position < len(y):
  y[position: len(x) + position] = x
else:
  y[position: len(y)] = x[0: len(y) - position]

x = x.reshape(n, n)
y = y.reshape(m, m)

不知道你到底是什么意思。如果要将较小数组的元素以相同的形状和排列放置到较大数组中,可以只指定给数组的一个切片:

>>> a = np.zeros((5, 5))
>>> b = np.ones((2, 3))
>>> bx, by = b.shape
>>> a[1:1+bx, 2:2+by] = b
>>> a
array([[0., 0., 0., 0., 0.],
       [0., 0., 1., 1., 1.],
       [0., 0., 1., 1., 1.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])

你想让x值从[0,0]、[0,1]、[1,0]或[0,0]开始吗?@andrew我想把x的元素复制到y,位置与x
y[slice(0,n),slice(0,n)]=x
应该这样做谢谢你@andrew,回答得好谢谢你@tobias_k的好答案,但我还是需要一些详细说明。假设第一个邻接矩阵(小矩阵)有节点1,2,4,第二个矩阵(大矩阵)有节点1,2,3,4,用零填充。我希望第一个矩阵中每个节点的所有条目都填充到第二个矩阵中,特别是这里节点3的条目都应该是零,因为它在第一个矩阵中没有任何值(不在那里)。
> x
array([[ 0.27871393,  0.07950119],
   [ 0.20680902, -0.50625609]])

> y
array([[ 0.        ,  0.        ,  0.27871393],
   [ 0.07950119,  0.20680902, -0.50625609],
   [ 0.        ,  0.        ,  0.        ]])
>>> a = np.zeros((5, 5))
>>> b = np.ones((2, 3))
>>> bx, by = b.shape
>>> a[1:1+bx, 2:2+by] = b
>>> a
array([[0., 0., 0., 0., 0.],
       [0., 0., 1., 1., 1.],
       [0., 0., 1., 1., 1.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])