python - Python numpy.compress() 减少矩阵
问题描述
我想使用向量u
和numpy.compress()
方法来减少 NumPy 矩阵,首先是行,然后是列。现在我的代码如下所示:
n = 4 #number of rows/columns
square_matrix = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
u = np.array([1,0,1,0])
v = []
for i in range(n):
v.append(np.compress(u,square_matrix[i]))
print(v)
我得到以下输出:
[array([1, 3]), array([5, 7]), array([ 9, 11]), array([13, 15])]
我有两个问题:
- 我现在如何再次从输出创建矩阵。
- 我怎么能对列重复相同的过程。(我最初的想法是使用 的转置
u
,如下所示:
for j in range((len(v_matrix[0])-1)):
w.append(np.compress(u.transpose(),v_matrix[:][j]))
解决方案
- 我现在如何再次从输出创建矩阵。
您可以以矢量化的方式进行操作,只需指定axis
关键字np.compress
np.compress(u, square_matrix, axis=1)
输出:
array([[ 1, 3],
[ 5, 7],
[ 9, 11],
[13, 15]])
- 我怎么能对列重复相同的过程。(我最初的想法是使用 u 的转置)
您的建议是正确的,但转置矩阵而不是u
. 这将用行切换列。
np.compress(u, square_matrix.T, axis=1)
输出:
array([[ 1, 9],
[ 2, 10],
[ 3, 11],
[ 4, 12]])
推荐阅读
- android - meteor run android 失败并出现错误“安装的构建工具修订版 31.0.0 已损坏。”
- javascript - 在字段中使用 renderCell 时,材质 UI 数据网格过滤器不起作用
- sql - OleDb.ExecuteNonQuery 总是返回 0
- python - 如何融化熊猫数据框?
- django - Django 在 fk_set 上注释 sum
- javascript - 在对象中获取 google sheet 行和列的二维值
- amazon-web-services - 无法访问 AWS Lambda 控制台并显示错误消息“您没有足够的权限。拒绝访问。'
- python - Python机器学习SGD分类错误
- wpf - 如何防止 Main 在 app.g.cs 中自动生成?
- android - 使用 Flow 在服务和片段之间“对话”