通过重复2D numpy数组中的值来创建4D numpy数组

时间:2017-02-27 14:42:07

标签: python arrays numpy dimension

我有一个2D numpy数组,用array1表示值。 array1的尺寸为2x4。我想创建一个尺寸为20x20x2x4的4D numpy数组array2,我希望复制数组array1以获取此数组。

也就是说,如果array1

[[1, 2, 3, 4],
 [5, 6, 7, 8]]

我想要

array2[0, 0] = array1
array2[0, 1] = array1
array2[0, 2] = array1
array2[0, 3] = array1
# etc.

我该怎么做?

3 个答案:

答案 0 :(得分:4)

初始化的一种方法 -

libraryDependencies

运行时测试 -

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "2.1.0",
  "com.databricks" %% "spark-csv" % "1.5.0",
  "org.apache.commons" % "commons-configuration2" % "2.1.1",
  "commons-beanutils" % "commons-beanutils" % "1.9.3"
)

答案 1 :(得分:3)

有两种简单的方法:

np.broadcast_to

array2 = np.broadcast_to(array1, (20, 20, 2, 4))  # array2 is a READONLY-view

np.tile

array2 = np.tile(array1, (20, 20, 1, 1))          # array2 is a normal numpy array

如果您不想修改array2,那么np.broadcast_to应该非常快速和简单。否则,应首选np.tile或分配给新分配的数组(请参阅Divakars answer)。

答案 2 :(得分:0)

我得到了答案。

array2[:, :, :, :] = array1.copy()

这应该可以正常工作