从meshgrid生成的子数组构建3D数组并引入第3维

时间:2019-02-09 23:31:30

标签: python numpy numpy-ndarray

我是python的新手,我想构建一个尺寸为1e3 x 1e3 x 16的完整3D数组。

为此,我尝试这样做:

dimBlocks = 4
numElBlock = 1000
numPoints = 1000

arrayCrossX = np.linspace(kMIN, kMAX, numPoints, endpoint=True)
arrayCrossY = np.linspace(-1, 1, numPoints, endpoint=True)

coordCrossX, coordCrossY = np.meshgrid(arrayCrossX, arrayCrossY)
arrayFullCross = np.array(coordCrossX.size, coordCrossY.sizes, dimBlocks**2)

但是它不起作用,出现以下错误:

arrayFullCross = np.array(arrayCrossX.size, arrayCrossY.size, dimBlocks**2) ValueError: only 2 non-keyword arguments accepted

任何人都可以看到从子数组coordCrossXcoordCrossY到三维尺寸等于dimBlocks**2 = 16的完整3D数组有什么问题

致谢

1 个答案:

答案 0 :(得分:0)

arrayFullCross = np.array(arrayCrossX.size, arrayCrossY.size, dimBlocks**2)
ValueError: only 2 non-keyword arguments accepted

np.array的签名:

array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)

使用np.array的正确方法:

In [658]: np.array([1,2,3], float)   # 2 nonkeyword arguments
Out[658]: array([1., 2., 3.])

也就是要从中创建数组的对象,后跟可选的dtype。参数copy之类的其他任何内容。

您提供3个位置参数。由于它们都是大小,因此您需要使用类似np.zeros的内容:

np.zeros( (arrayCrossX.size, arrayCrossY.size, dimBlocks**2) )