我的数组'cama'的结构如下:
shape(cama)
>>>(365, 720, 1440)
我的'lon_list'的形状如下:
shape(lon_list)
>>>(1440,)
我想要的是向cama添加或附加lon_list。所以我最终得到了一个具有以下尺寸的数组:
shape(new_cama)
>>>(365, 720, 1440, 1440)
我试过了:
new_cama = np.concatenate((cama, lon_list))
ValueError: all the input arrays must have same number of dimensions
有什么建议吗?
答案 0 :(得分:0)
尺寸乘法。这意味着如果你有:
a = [[1, 2, 3], [4, 5, 6]]
你有一个包含6个元素的(2 x 3)
数组。如果您想添加其他维度,例如b=[10, 20, 30, 40]
,则最终会得到一个(2 x 3 x 4) = 24
元素数组,因此您需要提供一种方法来完成这些缺少的(24 - 4 - 6) = 14
元素。你不能追加'维度:增加维度意味着在所有维度中附加newdimiension - 1
元素。
那么我们可以用这样的形状做什么呢?那么,您可以广播您的数组以匹配相应的维度,并以某种方式组合它们:
In[52]: a = np.array([[1,2,3], [4,5,6]])
In[53]: b = np.array([10, 20, 30, 40])
In[54]: a
Out[54]:
array([[1, 2, 3],
[4, 5, 6]])
In[55]: b
Out[55]: array([10, 20, 30, 40])
In[56]: c = a[:, :, None] * b[None, None, :]
In[57]: c
Out[57]:
array([[[ 10, 20, 30, 40],
[ 20, 40, 60, 80],
[ 30, 60, 90, 120]],
[[ 40, 80, 120, 160],
[ 50, 100, 150, 200],
[ 60, 120, 180, 240]]])
In[58]: c.shape
Out[58]: (2L, 3L, 4L)
在这里,我将它们相乘,但当然可以使用任何其他组合:要理解的关键是:
这样,我们可以通过查看'来组合(2, 3)
和(4,)
数组。它们都作为(2, 3, 4)
数组并以某种方式组合它们。但是你必须让它们成为类似形状的数组。
或者,如果数组的所有维度不同,则可以连接数组。假设你有一个(2, 3, 4, 5)
数组和一个(2, 3, 7, 5)
数组:那么在(2, 3, 4+7, 5)
数组中连接它们是有意义的。您可以通过“模拟”来再次做到这一点。形状(基本上是通过沿着任何缺失的尺寸重复图案),但是根据你的问题,它不清楚这是你想要实现的......