gpt4 book ai didi

python - 如何在 Python 中替换预分配的 np.array 的元素,matlab 样式

转载 作者:太空宇宙 更新时间:2023-11-04 10:00:50 25 4
gpt4 key购买 nike

我是来自 matlab 的 python 新手。现在,当我想将 matlab 中的向量保存到预分配矩阵时,我会这样做(matlab 代码)

a = zeros(5, 2)
b = zeros(5, 1)
# save elements of b in the first column of a
a(:, 1) = b

现在我在 python 中使用 numpy。我真的不知道如何描述这个问题。我在这里做的基本上是这个

a = np.zeros([5, 2])
b = np.ones([5, 1])
a[:, 0] = np.reshape(b, a[:, 0].shape)

因为以下解决方案不起作用:

a[:, 0] = b # Not working

谁能指出其他更接近 matlab 风格的方法?

最佳答案

简单的方法是 -

a[:,[0]] = b

sample 运行-

In [217]: a = np.zeros([5, 2])
...: b = np.ones([5, 1])
...:

In [218]: a[:,[0]] = b

In [219]: a
Out[219]:
array([[ 1., 0.],
[ 1., 0.],
[ 1., 0.],
[ 1., 0.],
[ 1., 0.]])

基本上,通过使用标量 a[:,0] 的这种切片,维数减少(移除使用标量的维数)以进行赋值。当我们指定像 a[:,[0]] 这样的索引列表时,维度会被保留,即保持为 2D 并且允许我们分配 b,也是 2D。让我们测试一下 -

In [225]: a[:,0].shape
Out[225]: (5,) # 1D array

In [226]: a[:,[0]].shape
Out[226]: (5, 1) # 2D array

In [227]: b.shape
Out[227]: (5, 1) # 2D array

作为引用,这里有一个 link到切片方案。引用其中的相关部分-

An integer, i, returns the same values as i:i+1 except thedimensionality of the returned object is reduced by 1.

In particular, a selection tuple with the p-th element an integer (and all otherentries :) returns the corresponding sub-array with dimension N - 1.

关于python - 如何在 Python 中替换预分配的 np.array 的元素,matlab 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43695704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com