【问题标题】:Python: Functions of arrays that return arrays of the same shapePython:返回相同形状数组的数组函数
【发布时间】:2016-07-19 21:25:18
【问题描述】:

注意:我使用的是 numpy

import numpy as np

给定 4 个相同(但任意)形状的数组,我正在尝试编写一个函数,该函数从数组的每个对应元素形成 2x2 矩阵,找到特征值,并返回两个与原始四个形状相同的数组,其元素是特征值(即,生成的数组将具有与输入相同的形状,array1 保存所有第一个特征值,array2 保存所有第二个特征值)。

我尝试执行以下操作,但不出所料,它给了我一个错误,说数组不是正方形的。

temp = np.linalg.eig([[m1, m2],[m3, m4]])[0]

我想我可以制作一个相同形状的空临时变量,

temp = np.zeros_like(m1)

遍历原始数组的每个元素并重复该过程。我的问题是我希望将其推广到任意形状的数组(不必是一维的)。我猜想找到数组的形状并设计循环来遍历每个元素并不是一个很好的方法。如何有效地做到这一点?

【问题讨论】:

    标签: python arrays function numpy


    【解决方案1】:

    构造一个 2x2x... 数组:

    temp = np.array([[m1, m2], [m3, m4]])
    

    将前两个维度移至 ...x2x2 数组的末尾:

    for _ in range(2):
        temp = np.rollaxis(temp, 0, temp.ndim)
    

    调用 np.linalg.eigvals(广播)获取 ...x2 的特征值数组:

    eigvals = np.linalg.eigvals(temp)
    

    并将其拆分为第一个特征值数组和第二个特征值数组:

    eigvals1, eigvals2 = eigvals[..., 0], eigvals[..., 1]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      • 2018-07-09
      • 2019-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多