Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 将一维numpy ndarray分配到二维数组的列中_Python_Arrays_Numpy - Fatal编程技术网

Python 将一维numpy ndarray分配到二维数组的列中

Python 将一维numpy ndarray分配到二维数组的列中,python,arrays,numpy,Python,Arrays,Numpy,假设dst是具有形状(5,N)的数据阵列,ramp是具有形状(5,)的数据阵列。(在这种情况下,N=2): 现在我想将ramp复制到dst的列中,结果如下: >>> dst array([[1., 1.], [1.25., 1.25.], [1.5., 1.5.], [1.75, 1.75], [2.0, 2.0]]) 我没想到这会起作用,它也不会: >>> dst[:] = ramp Tracebac

假设
dst
是具有形状(5,N)的数据阵列,
ramp
是具有形状(5,)的数据阵列。(在这种情况下,N=2):

现在我想将ramp复制到dst的列中,结果如下:

>>> dst
array([[1., 1.],
       [1.25., 1.25.],
       [1.5., 1.5.],
       [1.75, 1.75],
       [2.0, 2.0]])
我没想到这会起作用,它也不会:

>>> dst[:] = ramp
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: could not broadcast input array from shape (5) into shape (5,2)
有什么想法吗

笔记
与此不同,我希望将
ramp
分配到
dst
(甚至是
dst
的子集)。此外,这里给出的解决方案使用python数组作为源,而不是数据数组,因此需要调用.transpose等。

方法1:使用广播:

正如评论中提到的那样。广播也在协助方面起作用

dst[:] = ramp[:,None]

方法2:使用
列堆栈

N = dst.shape[1]
dst[:] = np.column_stack([ramp.tolist()]*N)

Out[479]:
array([[1.  , 1.  ],
       [1.25, 1.25],
       [1.5 , 1.5 ],
       [1.75, 1.75],
       [2.  , 2.  ]])

方法3:使用
np.tile

N = dst.shape[1]
dst[:] = np.tile(ramp[:,None], (1,N))

啊!!感谢您的
ramp[:,None]
提示。这更容易(因为广播在这种情况下起作用):
dst[:]=ramp[:,None]
。(如果您同意,请随时更新您的答案!)哈!也完全忘记了任务中的广播作品。我把它添加到了答案中:)这回答了你的问题吗?建议的帖子()比下面给出的答案复杂得多。它不涉及复制到向量中。否则我永远不会发现这种“努普式”的技术。
N = dst.shape[1]
dst[:] = np.column_stack([ramp.tolist()]*N)

Out[479]:
array([[1.  , 1.  ],
       [1.25, 1.25],
       [1.5 , 1.5 ],
       [1.75, 1.75],
       [2.  , 2.  ]])
N = dst.shape[1]
dst[:] = np.tile(ramp[:,None], (1,N))