将元组转换为数组并调用新数组
Converting tuple into array and calling the new array
我正在开发自定义回归分析例程,运行遇到一个问题,试图调用元组元素进行计算:
EV = np.linalg.eig(xMe)
print EV
打印EV的结果如下:
(array([ 4.59554481e-02, 1.73592040e+04]), matrix([[-0.99977087, -0.02140571],
[ 0.02140571, -0.99977087]]))
它是一个元组。我需要访问元组中第一个数组中的每个元素(4.59554481e-02、1.73592040e+04)。当我尝试使用以下方法转换元组时:
lEV = np.asarray(EV)
我收到以下错误:
ValueError Traceback (most recent call last)
<ipython-input-172-f46907801d9e> in <module>()
42 print EV
43
---> 44 lEV = np.asarray(EV)
462 return array(a, dtype, copy=False, order=order)
463
464 def asanyarray(a, dtype=None, order=None):
ValueError: could not broadcast input array from shape (2,2) into shape (2)
我是 Python 的新手,可能有一种非常简单的方法可以访问这两个元素,但我无法弄清楚。
执行此操作的 pythonic 方法是使用元组解包:
>>> import numpy as np
>>> a = np.array([[0,17],[42,23]])
>>> eigenvalues, eigenvectors = np.linalg.eig(a)
>>> print eigenvalues
array([-17.59037642, 40.59037642])
>>> print eigenvectors
array([[-0.69493692, -0.38630591],
[ 0.71907071, -0.92237072]])
这允许您将元组的两项解包到两个变量中。
在这些变量上,您现在可以使用标准的 for 循环:
>>> for value in eigenvalues:
... print(value)
-17.5903764156
40.5903764156
或者(如果你知道你会得到多少个值)你可以再次使用元组解包:
>>> ev_1, ev_2 = eigenvalues
>>> print ev_1
-17.5903764156
>>> print ev_2
40.5903764156
我正在开发自定义回归分析例程,运行遇到一个问题,试图调用元组元素进行计算:
EV = np.linalg.eig(xMe)
print EV
打印EV的结果如下:
(array([ 4.59554481e-02, 1.73592040e+04]), matrix([[-0.99977087, -0.02140571],
[ 0.02140571, -0.99977087]]))
它是一个元组。我需要访问元组中第一个数组中的每个元素(4.59554481e-02、1.73592040e+04)。当我尝试使用以下方法转换元组时:
lEV = np.asarray(EV)
我收到以下错误:
ValueError Traceback (most recent call last)
<ipython-input-172-f46907801d9e> in <module>()
42 print EV
43
---> 44 lEV = np.asarray(EV)
462 return array(a, dtype, copy=False, order=order)
463
464 def asanyarray(a, dtype=None, order=None):
ValueError: could not broadcast input array from shape (2,2) into shape (2)
我是 Python 的新手,可能有一种非常简单的方法可以访问这两个元素,但我无法弄清楚。
执行此操作的 pythonic 方法是使用元组解包:
>>> import numpy as np
>>> a = np.array([[0,17],[42,23]])
>>> eigenvalues, eigenvectors = np.linalg.eig(a)
>>> print eigenvalues
array([-17.59037642, 40.59037642])
>>> print eigenvectors
array([[-0.69493692, -0.38630591],
[ 0.71907071, -0.92237072]])
这允许您将元组的两项解包到两个变量中。 在这些变量上,您现在可以使用标准的 for 循环:
>>> for value in eigenvalues:
... print(value)
-17.5903764156
40.5903764156
或者(如果你知道你会得到多少个值)你可以再次使用元组解包:
>>> ev_1, ev_2 = eigenvalues
>>> print ev_1
-17.5903764156
>>> print ev_2
40.5903764156