Numpy 矩阵到数组
- 2025-03-05 09:18:00
- admin 原创
- 5
问题描述:
我正在使用 numpy。我有一个 1 列 N 行的矩阵,我想从中获取一个包含 N 个元素的数组。
例如,如果我有M = matrix([[1], [2], [3], [4]])
,我想要得到A = array([1,2,3,4])
。
为了实现它,我使用了A = np.array(M.T)[0]
。有谁知道一种更优雅的方法来获得相同的结果?
谢谢!
解决方案 1:
如果你想要一些更易读的东西,你可以这样做:
A = np.squeeze(np.asarray(M))
同样地,您也可以这样做:A = np.asarray(M).reshape(-1)
,但这不太容易阅读。
解决方案 2:
result = M.A1
https://numpy.org/doc/stable/reference/ generated/numpy.matrix.A1.html
matrix.A1
1-d base array
解决方案 3:
您可以尝试以下变体:
result=np.array(M).flatten()
解决方案 4:
A, = np.array(M.T)
我想这取决于你对优雅的定义,但这就是我要做的
解决方案 5:
np.array(M).ravel()
如果您关心速度;但如果您关心内存:
np.asarray(M).ravel()
解决方案 6:
或者你可以尝试使用
A = M.view(np.ndarray)
A.shape = -1
解决方案 7:
首先,,Mv = numpy.asarray(M.T)
它给你一个 4x1 但二维的数组。
然后,执行A = Mv[0,:]
,这将得到您想要的结果。您可以将它们组合在一起,如下所示numpy.asarray(M.T)[0,:]
。
解决方案 8:
这会将矩阵转换为数组
A = np.ravel(M).T
解决方案 9:
numpy 中的ravel()和flatten()函数是我想在这里尝试的两种技术。我想补充Joe、Siraj、bubble和Kevad的帖子。
拉威尔:
A = M.ravel()
print A, A.shape
>>> [1 2 3 4] (4,)
展平:
M = np.array([[1], [2], [3], [4]])
A = M.flatten()
print A, A.shape
>>> [1 2 3 4] (4,)
numpy.ravel()
速度更快,因为它是库级函数,不会复制任何数组。但是,如果您使用,数组 A 中的任何更改都会转移到原始数组numpy.ravel()
M。
numpy.flatten()
比 慢numpy.ravel()
。但是如果你使用numpy.flatten()
创建 A,那么A 中的更改将不会延续到原始数组 M。
numpy.squeeze()
和比和M.reshape(-1)
慢。numpy.flatten()
`numpy.ravel()`
%timeit M.ravel()
>>> 1000000 loops, best of 3: 309 ns per loop
%timeit M.flatten()
>>> 1000000 loops, best of 3: 650 ns per loop
%timeit M.reshape(-1)
>>> 1000000 loops, best of 3: 755 ns per loop
%timeit np.squeeze(M)
>>> 1000000 loops, best of 3: 886 ns per loop
解决方案 10:
来得有点晚,希望这对某人有帮助,
np.array(M.flat)
- 2025年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)