我正在尝试调整numpy数组的大小,但似乎调整大小的方法是首先展平数组,然后获得第一个X * Y elem并将它们放入新形状。我想要做的是在coord 3,3处切割阵列,而不是重新排列它。类似的事情发生在我尝试升级它说7,7 ...而不是“重新排列”我想用零填充新的cols和行并保持数据不变。 有没有办法做到这一点?
> a = np.zeros((5,5))
> a.flat = range(25)
> a
array(
[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
[ 15., 16., 17., 18., 19.],
[ 20., 21., 22., 23., 24.]])
> a.resize((3,3),refcheck=False)
> a
array(
[[ 0., 1., 2.],
[ 3., 4., 5.],
[ 6., 7., 8.]])
谢谢......
答案 0 :(得分:4)
升级到7x7会像这样
upsized = np.zeros([7, 7])
upsized[:5, :5] = a
答案 1 :(得分:3)
我相信你想使用numpy的切片语法而不是resize
。 resize
首先调整数组并使用一维视图。
>>> a = np.arange(25).reshape(5,5)
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
>>> a[:3,:3]
array([[ 0, 1, 2],
[ 5, 6, 7],
[10, 11, 12]])
你在这里做的是观察numpy数组。例如,通过切片来更新原始数组:
>>> a[:3,:3] = 0
>>> a
array([[ 0, 0, 0, 3, 4],
[ 0, 0, 0, 8, 9],
[ 0, 0, 0, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
可以找到关于numpy切片语法的优秀指南here。
升迁(或填充)仅适用于复制数据。你从一个零数组开始并适当填写
upsized = np.zeros([7, 7])
upsized[:5, :5] = a