python - 从 meshgrid 生成的子数组构建 3D 数组并引入第 3 维
问题描述
我是 Python 新手,我想构建一个完整的 3D 数组,尺寸 = 1e3 x 1e3 x 16。
为此,我尝试这样做:
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
从子数组构建这个完整的 3D 数组可能有什么问题coordCrossX
,coordCrossY
并且第三维等于dimBlocks**2 = 16
?
解决方案
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.])
也就是说,您要从中创建数组的对象,后跟 optional dtype
。其他任何东西都必须像copy
.
您提供 3 个位置参数。由于它们都是尺寸,因此您需要使用以下内容np.zeros
:
np.zeros( (arrayCrossX.size, arrayCrossY.size, dimBlocks**2) )
推荐阅读
- c# - 由于类实现了所需的接口,因此应在没有错误时转换错误
- c++ - 从 yytext 获取 ASCII 值
- python - 多元 KNN 预测
- javascript - 我需要一个按钮来激活我的 .nav-tabs 中的某个选项卡
- .net - 如何在不调用每个项目的情况下让 dotnet build 选择正确的框架?
- python - xgboost.train 与 XGBClassifier
- php - 如何使用基于 ID 的 PHP 从 json 文件中删除对象
- double-quotes - 使用带单引号或双引号的 strlen
- javascript - 用于图像预览的“保存按钮”
- nativescript - 如何使用 Nativescript 框架导入 JavaScript 数学模块?