将Numpy Arrays重塑为多维数组

时间:2016-06-17 12:19:10

标签: python numpy

对于numpy数组我发现

x = numpy.array([]).reshape(0,4)

很好,允许我将(0,4)数组附加到x而不会使数组失去其结构(即dosnt只是成为一个数字列表)。但是,当我尝试

x = numpy.array([]).reshape(2,3)

它会抛出错误。这是为什么?

2 个答案:

答案 0 :(得分:1)

这个输出将解释重塑数组的意义......

np.array([2, 3, 4, 5, 6, 7]).reshape(2, 3)

输出 -

array([[2, 3, 4],
       [5, 6, 7]])

重塑只是意味着重塑数组。 reshape(0,4)表示将当前数组直观地转换为0行和4列的格式。但是0行意味着没有元素意味着它因为你的数组是空的而工作。类似地(2,3)表示2行3列,这是6个元素......

答案 1 :(得分:0)

-1不是'追加'功能。它会将您提供的数组重新整形为所需的尺寸。

@RestController public class SomeController { public ResponseEntity<InputStreamResource> someResource() { byte[] byteArr = ...; return ResponseEntity.status(HttpStatus.OK).body(new InputStreamResource(new ByteArrayInputStream(byteArr))); } } 有效,因为您将零元素数组重新整形为0x4(= 0个元素)数组。
reshape不起作用,因为您正在尝试将零元素数组重新整形为2x3(= 6个元素)数组。

要创建空数组,请改用np.array([]).reshape(0,4)

如果您想知道,无法附加numpy数组。您必须将其作为np.reshape([]).reshape(2,3)进行处理,附加您想要的内容并将其转换回numpy数组。最好不要在以后添加数据时创建numpy数组。