gpt4 book ai didi

python - 使用变量 reshape Numpy 中的数组

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:42 25 4
gpt4 key购买 nike

我试图在 numpy 上获取一个数组,添加一行代码,将其附加到数组中,然后将整个数组重新整形回翻译后的 r。当我尝试使用 plt.imshow 再次显示它时,它一直说“新数组的总大小必须保持不变”。有没有更好的方法来解决这个问题?

z = np.array([[[23] * ncols]*nrows]).reshape(nrows, ncols)

for j in range(0,1):
for i in range(0,ncols):
np.append(z, [23])

np.reshape(z, nrows+1,ncols)

plt.imshow(z, interpolation='none', cmap=cm.gist_rainbow)

此外,如果我将 j 从 nrows 迭代到 ncols 会怎样?除了乘以 nrows 和 ncols 之外,是否还需要进行特定的编辑?

编辑:我尝试用

reshape
np.reshape(z, nrows+2, ncols)

有效;然而,当使用 0 到 100 的范围来检查差异时,程序会花费很长时间并且实际上不会显示新值。有没有更好的方法来处理这个问题?

最佳答案

据我了解,您有一个 numpy 数组,并且想要添加两行。

让我们首先创建名为 a 的数组:

In [61]: a = np.arange(12); a.resize(3, 4); print a
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]

现在,让我们创建要添加到 a 的新行:

In [62]: newrow1 = np.array([100, 101, 102, 103])

In [63]: newrow2 = np.array([200, 201, 202, 203])

现在,让我们添加这些行:

In [64]: np.vstack((a, newrow1, newrow2))
Out[64]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[100, 101, 102, 103],
[200, 201, 202, 203]])

注释

让我们考虑一下这行代码:

z = np.array([[[23] * ncols]*nrows]).reshape(nrows, ncols)

让我们尝试两种变体:

In [74]: nrows=3; ncols=4; np.array([[[23] * ncols]*nrows])
Out[74]:
array([[[23, 23, 23, 23],
[23, 23, 23, 23],
[23, 23, 23, 23]]])

In [75]: nrows=3; ncols=4; np.array([[[23] * ncols]*nrows]).reshape(nrows, ncols)
Out[75]:
array([[23, 23, 23, 23],
[23, 23, 23, 23],
[23, 23, 23, 23]])

我们可以得出结论,调用 reshape 是不必要的,因为创建的数组已经具有指定的行数和列数。

现在,让我们考虑这个循环:

for j in range(0,1):
for i in range(0,ncols):
np.append(z, [23])

np.append 不会就地更改数组;它返回一个新数组。因此,这个循环什么也不做。

让我们考虑一下 reshape :

np.reshape(z, nrows+1,ncols)

正如您所指出的,使用reshape,“新数组的总大小必须保持不变”。解决方案是使用resize。在这里,我们演示了对数组 a 进行resize:

In [86]: a
Out[86]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])

In [91]: a = np.resize(a, (5,4)); print a
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[ 0 1 2 3]
[ 4 5 6 7]]

如果您希望最后两行都具有值23,那么可以简单地分配它:

In [94]: a[3:, :] = 23; print a
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[23 23 23 23]
[23 23 23 23]]

关于python - 使用变量 reshape Numpy 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26374547/

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