在开始之前,我会补充一点,我根本没有使用Python很长时间!在我发布之前,StackOverflow上也有类似的问题但是我无法从中得到一个可用的答案,因此我仍然被卡住了。
正如标题所示,我有四个1-D阵列。第一个包含 X[]
坐标,第二个包含 Y[]
坐标,第三个包含 U[]
每个点的向量组件,最后是 V[]
组件的第四个组件。数组已经安排好,例如,X(a), Y(a)
给出了一个特定的点,其中包含向量组U(a)
和V(a)
,其中数组X, Y, U
和{{ 1}}是上述坐标/向量数组。数组采用这种格式,因为我还用它们制作了一个三维箭袋图(我省略了z坐标)。
我知道在这种情况下np.mgrid通常用于制作网格,但每个坐标点的矢量都是交叉产品的一部分,V
没有给我什么我想了。无论如何,长话短说,我现在有四个阵列,如前所述,我想制作一个流图。
有人能告诉我实现这个目标的最佳方式吗?
我不能简单地将数组插入流绘图参数中,因为它指出np.mgrid
和U
必须作为2D数组输入。
干杯!
答案 0 :(得分:0)
事先说明:numpy
4D到1D便宜又快。
在任何情况下,1D向量应在处理过程中进行,np
为您提供了一个强大的技巧来使用它的.view
概念。从技术上讲,您可以让numpy
根据需要简单地引用原始numpy.ndarray
的一部分(或全部),而不会重复数据单元(一旦尺寸增大且RAM内低效数据非常重要结构停止工作)。
可以简单地将完整的4D | 5D | nD
坐标存储在一个设备齐全的阵列中,并根据需要智能参考1D
- 组件:
XYZUV_any_dimensionalityObservationDataPointsARRAY[:,0] == ( x0, y0, z0, u0, v0 )
XYZUV_any_dimensionalityObservationDataPointsARRAY[:,1] == ( x1, y1, z1, u1, v1 )
# and still use 1D-component vectors, where appropriate ( without DUPs )
XYZUV_any_dimensionalityObservationDataPointsARRAY[0,:] == X # 0-based index
XYZUV_any_dimensionalityObservationDataPointsARRAY[1,:] == Y
XYZUV_any_dimensionalityObservationDataPointsARRAY[2,:] == Z
...
XYZUV_any_dimensionalityObservationDataPointsARRAY[4,:] == V
XYUV_ObservationDataPoints4DARRAY = np.vstack( ( X,
Y,
U,
V
) # needs a tuple
)
因此,绘图过程仍然可以在需要输入适当的函数语法后重新使用部分视图:
X
保持为1D
XYZUV[0,:] # X via a view taken: 1st column and all rows +[ NO RAM ]
Y
保持为1D
XYZUV[1,:] # Y via a view taken: 2st column and all rows +[ NO RAM ]
UV
保持为2D
XYZUV[3:5,:] # UV via a view taken at all columns in [3:5] +[ NO RAM ]
UV
粘贴到2D
np.vstack( ( U, V ) ) # UV via an ad-hoc *stack() -- will allocate +[new RAM ]