将给定的数组重复为更复杂的形状

问题描述 投票:0回答:1

我想创建一个形状为

(3, 3, 4)
的数组。用于填充数组的数据已给出。

我的解决方案现在工作得很好,但感觉我在这里错过了一个麻木的课程。我不想一遍又一遍地做多个

.repeat()

start = np.linspace(start=10, stop=40, num=4)
arr = np.repeat([start], 3, axis=0)
arr = np.repeat([arr], 3, axis=0)
arr

# output
array([[[10., 20., 30., 40.],
        [10., 20., 30., 40.],
        [10., 20., 30., 40.]],

       [[10., 20., 30., 40.],
        [10., 20., 30., 40.],
        [10., 20., 30., 40.]],

       [[10., 20., 30., 40.],
        [10., 20., 30., 40.],
        [10., 20., 30., 40.]]])
python numpy multidimensional-array
1个回答
0
投票

您可以创建所需的阵列,方法是首先使用

np.linspace()
创建一维阵列,然后使用
np.tile()
以所需的形状重复阵列。

这里有一个更简洁的创建数组的方法:

import numpy as np

start = np.linspace(start=10, stop=40, num=4)
arr = np.tile(start, (3, 3, 1))

print(arr)

输出:

[[[10. 20. 30. 40.]
  [10. 20. 30. 40.]
  [10. 20. 30. 40.]]

 [[10. 20. 30. 40.]
  [10. 20. 30. 40.]
  [10. 20. 30. 40.]]

 [[10. 20. 30. 40.]
  [10. 20. 30. 40.]
  [10. 20. 30. 40.]]]

在这个解决方案中,

np.tile()
用于以
start
的形状重复
(3, 3, 1)
数组。添加最后一个维度
(1)
以匹配所需的形状
(3, 3, 4)
并正确广播值。

© www.soinside.com 2019 - 2024. All rights reserved.