对于numpy数组我发现
x = numpy.array([]).reshape(0,4)
很好,允许我将(0,4)数组附加到x而不会使数组失去其结构(即dosnt只是成为一个数字列表)。但是,当我尝试
时x = numpy.array([]).reshape(2,3)
它会抛出错误。这是为什么?
答案 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数组。