take 4 individual 1D arrays, of length 7, 10, 13, and 16 together into a (7,10,13,16) array
在numpy
,像(7,10,13,16)
元组通常是指shape
。在这种情况下,它看起来像是一个带有7 * 10 * 13 * 16元素的4维数组。
但更现实我想你想这4个阵列
[[1,2...,7], [0,2,...9], [1,...13], etc]
那些不能变成一个多维数组列表。这样的数组必须有相同数量的行,列等,而不是一个衣衫褴褛的集合。
有一个dtype=object
数组有这样的事情,其中元素可以是列表,数组,无或任何Python对象。我几乎不愿意提及它,因为太多的SO问题似乎会误用它。在大多数情况下,一个普通的Python列表也同样适用。
为了获得更多帮助,您需要更清楚地了解您寻求的内容。
当你说一些像I've tried methods similar to the following, but to no avail.
- 你真的应该说出了什么问题。你得到了什么样的错误?错误讯息?或者结果不是你想要的?细节(但不是太多!:))提出了一个很好的问题。
为了使 '过程空间',你可以这样做:
小样本阵列:
In [676]: heights=np.array([40,50])
In [677]: widths=np.array([60,65,70])
In [678]: yrs=np.array([1995,1996,1997,1998])
的正确尺寸的全0空间:
In [679]: eff=np.zeros((2,3,4))
将所有值与公式结合起来的“效率”计算
In [680]: eff1=(yrs-1994)[None,None,:]/(heights[:,None,None]+widths[None,:,None])
In [681]: eff1.shape
Out[681]: (2, 3, 4)
In [682]: eff1
Out[682]:
array([[[ 0.01 , 0.02 , 0.03 , 0.04 ],
[ 0.00952381, 0.01904762, 0.02857143, 0.03809524],
[ 0.00909091, 0.01818182, 0.02727273, 0.03636364]],
[[ 0.00909091, 0.01818182, 0.02727273, 0.03636364],
[ 0.00869565, 0.0173913 , 0.02608696, 0.03478261],
[ 0.00833333, 0.01666667, 0.025 , 0.03333333]]])
ix_
是一个方便的功能添加所有那些None
,简化表达式:
In [695]: H,W,Y=np.ix_(heights,widths, yrs)
In [696]: eff1=(Y-1994)/(H+W)
我可以轻松地将这些输入阵列中的每一个转换为(2,3,4)
阵列:
HH, WW, YY = np.broadcast_arrays(H,W,Y)
但是,如果您正在构想一个带有行和列标签的复杂“表格”,那么使用pandas
可能会更好。
构建 '空间' 的一个非numpy的方法是用itertools.product
In [704]: import itertools
In [705]: list(itertools.product(heights,widths,yrs))
Out[705]:
[(40, 60, 1995),
(40, 60, 1996),
(40, 60, 1997),
(40, 60, 1998),
(40, 65, 1995),
(40, 65, 1996),
...
(50, 70, 1996),
(50, 70, 1997),
(50, 70, 1998)]
“[...],它看起来像与7个* 10个* 13个* 16个元件4维数组。 “ - 这正是我所追求的。对于不包括更多细节,我表示歉意,谢谢你的支持!作为最终结果,我想结束一个矩阵,例如。 “数据”,其中变量资源管理器中的“大小”参数显示(7,10,13,16)。我尝试了你的4个数组的列表,data = [[1,2 ...,7],[0,2,... 9],[1,... 13]等]。但是使用这种方法,'size'列显示4. ,但是它的大小显示为4 – AaronJPung
'broadcast'很容易制作这种形状的数组。但你如何使用数组值呢?相乘在一起?添加?使用一个,忽略其余的?许多选择。用一些小阵列来演示。 – hpaulj
最好在您的原始问题中添加详细信息;很难阅读长篇评论。但是,看看我的编辑,看看我的要求。 – hpaulj