如何初始化多维numpy数组

时间:2015-06-30 20:13:36

标签: python arrays algorithm numpy

我想初始化一个n x n x n x ... x n维数组,其中n显示k次。

假设n = 10。

k = 2的情况是使用:arr = np.array((10,10))

创建一个10 x 10数组

k = 3的情况是使用:arr = np.array((10,10,10))

创建一个10 x 10 x 10阵列

我该怎么做?这种方法的目的是通过网格搜索实现卡方最小化。网格是一个n x n x n x ... x n维数组,其中n表示k次(k是自由参数的数量)。

3 个答案:

答案 0 :(得分:0)

您可以向它传递生成器表达式或列表推导的元组表示。像这样:

tuple((n for i in range(k))) # n = 10, k = 5 in this case

(10, 10, 10, 10, 10)

答案 1 :(得分:0)

如果要使用零初始化数组,可以使用numpy.zeros并将其传递给数组的形状。

示例 -

import numpy as np

k = 5
n = 10
narr = np.zeros(tuple(n for _ in range(k)))

print(narr.shape)

以上示例将创建一个10x10x10x10x10阵列。请注意,如果k是10或更高的数字,numpy可能无法处理那些大数组。

答案 2 :(得分:0)

要创建n x n ... x n数组,可以使用(n,)*k获取指定维度的元组。那是(10,)*5 = (10, 10, 10, 10, 10)。用于构造数组:

arr = np.zeros((n,)*k)

其他构造命令onesempty等也可能有用。

为了确保我们在同一页面上有命名法,你还应该注意到问题陈述了一些错误:arr = np.array((10,10,10))没有给出“10 x 10 x 10阵列”,而只是一个数组三十。