我有一个shape (5,2)
数组,每一行由一个shape (4,3,2)
和一个浮点数组成。在
在对数组[:,0]
切片后,我得到一个形状为(5,)
的数组,每个元素的形状都是(4,3,2)
,而不是形状(5,4,3,2)
的数组(即使我使用np.array()
)。在
为什么?在
已编辑
示例:
a1 = np.arange(50).reshape(5, 5, 2)
a2 = np.arange(50).reshape(5, 5, 2)
b1 = 15.0
b2 = 25.0
h = []
h.append(np.array([a1, b1]))
h.append(np.array([a2, b2]))
h = np.array(h)[:,0]
np.shape(h) # (2,)
np.shape(h[0]) # (5, 5, 2)
np.shape(h[1]) # (5, 5, 2)
h = np.array(h)
np.shape(h) # (2,) Why not (2, 5, 5, 2)?
因为}是不同形状的对象(
^{pr2}$a1
和{b1
甚至不是数组),因此由它们组成的数组将具有dtype对象。而由几个组成的h
仍然是object-dtype。在在appends之后,
h
(作为数组)是object dtype。第2列是b1和b2值,第1列是a1和a2。在要将这些
a1
a2
数组组合成一个数组,需要某种形式的连接。stack
在一个新的轴上执行。在将(2,)数组转换为一个列表,确实允许
np.array
将元素重新组合成一个更高维的数组,就像np.stack
一样:您有一个objects数组;如果您确定所有子元素都具有相同的形状,则可以使用
np.stack
将其转换为所需的形状:^{pr2}$
你似乎相信纽比可以神奇地预言你的意图。正如@Barmar在注释中解释的那样,当您用
[:, 0]
分割一个shape(5,2)数组时,将得到该数组第一列的所有行。该切片的每个元素都是一个shape(4,3,2)数组。纽比给了你你想要的东西。在如果要将其转换为shape(5,4,3,2)数组,则需要执行进一步的处理以从shape(4,3,2)数组中提取元素。在
相关问题 更多 >
编程相关推荐