我想初始化一个n x n x n x ... x n维数组,其中n显示k次。
假设n = 10。
k = 2的情况是使用:arr = np.array((10,10))
k = 3的情况是使用:arr = np.array((10,10,10))
我该怎么做?这种方法的目的是通过网格搜索实现卡方最小化。网格是一个n x n x n x ... x n维数组,其中n表示k次(k是自由参数的数量)。
答案 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)
其他构造命令ones
,empty
等也可能有用。
为了确保我们在同一页面上有命名法,你还应该注意到问题陈述了一些错误:arr = np.array((10,10,10))
没有给出“10 x 10 x 10阵列”,而只是一个数组三十。