求助:numpy.resize函数为何未生效?数组形状始终无变化
解决Numpy数组resize不生效及调整形状至(4096,15)的问题
为什么你的代码里数组形状没变化
np.resize() 不会直接修改原数组,而是返回一个调整后的新数组。你之前的代码没有将返回值赋值给原变量,所以myArr的形状始终保持(4,2)。修改后的代码示例:
import numpy as np myArr = np.array([[0, 1], [2, 3], [3, 4], [5, 6]]) print(myArr.shape, "\n", myArr, "\n") myArr = np.resize(myArr, (6, 2)) # 将新数组赋值给原变量 print(myArr.shape, "\n", myArr, "\n") myArr = np.resize(myArr, (4, 3)) # 将新数组赋值给原变量 print(myArr.shape, "\n", myArr, "\n")
运行后就能看到数组形状和内容的变化。
将(*,15)的数组调整为(4096,15)
根据你需要的填充逻辑,提供两种常用方案:
方案1:重复原数组元素填充(Numpy默认逻辑)
使用np.resize()会自动循环重复原数组的内容,补足到目标行数:
import numpy as np # 示例原数组,形状为(n,15),n为任意小于4096的数 arr = np.random.rand(100, 15) # 调整为目标形状 new_arr = np.resize(arr, (4096, 15)) print(new_arr.shape) # 输出(4096,15)
方案2:填充特定固定值(如0)
如果需要填充固定值而非重复原数组,可以手动创建目标数组并复制原内容:
import numpy as np arr = np.random.rand(100, 15) # 示例原数组 target_shape = (4096, 15) # 创建指定填充值的目标数组,这里以0为例 new_arr = np.zeros(target_shape, dtype=arr.dtype) # 将原数组内容复制到新数组的前n行 new_arr[:arr.shape[0], :] = arr print(new_arr.shape) # 输出(4096,15)
你可以把np.zeros换成np.ones或其他生成固定值数组的方法,实现自定义填充。
内容的提问来源于stack exchange,提问作者user3904242
相关产品推荐
相关产品推荐

