【问题标题】:Resizing an array to another shape in Python在 Python 中将数组大小调整为另一个形状
【发布时间】:2019-10-23 15:23:47
【问题描述】:

我有以下数组:

a = np.random.rand(5,2)
a

array([[0.98736372, 0.07639041],
       [0.45342928, 0.4932295 ],
       [0.75789786, 0.48546238],
       [0.85854235, 0.74868237],
       [0.13534155, 0.79317482]])

我想调整它的大小,使其分为 2 个包含三个元素的批次(根据需要添加零):

array([[[0.98736372, 0.07639041],
       [0.45342928, 0.4932295 ],
       [0.75789786, 0.48546238]],
       [[0.85854235, 0.74868237],
       [0.13534155, 0.79317482],
       [0, 0]]])

我试过这个,但它返回无:

a = a.copy()
a.resize((2,3,2), refcheck = False)

我相信 .reshape 不会提供解决方案,因为它无法填充 0 以符合数组的所需尺寸。

【问题讨论】:

  • 您是否重新检查了resize 方法的文档?为什么要复制?

标签: python arrays numpy resize reshape


【解决方案1】:

使用numpy.resize,你必须像这样使用:

import numpy as np
a = np.random.rand(5,2)
b = np.resize(a, (2,3,2))

否则你可以使用对象方法得到同样的结果,像这样:

import numpy as np
a = np.random.rand(5,2)
a.np.resize(2,3,2)
b = a.copy()

注意第一个返回ndarray,最后一个返回None,因为它改变了对象本身。欲了解更多信息,请查看numpy.resize doc

【讨论】:

  • 谢谢!从 a.np.resize(shape) 中删除 np 时,只有 object 方法有效。第一种方法不起作用(文档提出了 np.resize(shape) 与 a.resize(shape) 不同的事实。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-01
  • 1970-01-01
  • 2013-12-27
  • 2017-03-09
相关资源
最近更新 更多