关于 numpy 的 reshape,请教

2020-05-16 22:15:10 +08:00
 oldbird

a=[1,2,3,4,5,6] 怎样可以读取为这样的 numpy 数组: array([[1, 3, 5], [2, 4, 6]]) ?

2025 次点击
所在节点    Python
10 条回复
Merlini
2020-05-16 22:18:16 +08:00
np.array(a).reshape(2,3)
有空多看文档
oldbird
2020-05-16 22:23:01 +08:00
@Merlini 这样的结果是

[[1 2 3]
[4 5 6]]

和想要的结果不一样。
Merlini
2020-05-16 22:27:00 +08:00
@oldbird #2 噢噢 不好意思看错了 这样的话就更简单了 不用 numpy
a[::2] 和 a[1::2]就行, 前者是[1,3,5],后者是[2,4,6]
oldbird
2020-05-16 22:42:29 +08:00
@Merlini 谢谢,用 numpy 有方法吗? 实际情况是将图像读取为 numpy 数组类型,然后按第一列、第二列……的顺序将所有像素读取并处理,结果为一维数组,想还原成原影像的尺寸。
yiningyang1228
2020-05-16 22:42:39 +08:00
接楼上,然后再 stack 起来就行了,np.vstack((a[::2], a[1::2]))
Xs0ul
2020-05-16 22:45:45 +08:00
np.array(a).reshape(3,2).T
Merlini
2020-05-16 22:50:50 +08:00
@oldbird #4
那我们假设是个二维数组 test = numpy.array([[1, 2], [3, 4], [5, 6]])

>>> test[:,0]
array([1, 3, 5])

这样就读取了第一列的值。

这是你需要的吗?
c0xt30a
2020-05-16 22:56:10 +08:00
transpose 一下就可以了

```
np.array( a ).reshape( (3, 2) ).T
```
necomancer
2020-05-16 22:57:10 +08:00
np.arange(1,7).reshape(3,2).T
dongxiao
2020-05-17 22:24:41 +08:00
np.array(a).reshape((2, 3), order="F")

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/672441

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX