我想创建一个形状为
(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.]]])
您可以创建所需的阵列,方法是首先使用
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)
并正确广播值。