我有一个矩阵A,我想2点矩阵U和L使得U包含A的上三角形单元(上述所有的元素和不包括对角线)同样地,对于L(下面所有的元素和不包括对角线).有没有numpy办法做到这一点?
例如
A = array([[ 4., 9., -3.],
[ 2., 4., -2.],
[-2., -3., 7.]])
U = array([[ 0., 9., -3.],
[ 0., 0., -2.],
[ 0., 0., 0.]])
L = array([[ 0., 0., 0.],
[ 2., 0., 0.],
[-2., -3., 0.]])
Run Code Online (Sandbox Code Playgroud) 我有一个方阵A(可以是任何大小),我想取上三角形部分并将这些值放在一个数组中,而不是中心对角线以下的值(k = 0).
A = array([[ 4, 0, 3],
[ 2, 4, -2],
[-2, -3, 7]])
Run Code Online (Sandbox Code Playgroud)
使用numpy.triu(A)让我
A = array([[ 4, 0, 3],
[ 0, 4, -2],
[ 0, 0, 7]])
Run Code Online (Sandbox Code Playgroud)
但是从这里我怎么只将上三角形元素复制成一个简单的数组呢?如:
[4, 0, 3, 4, -2, 7]
Run Code Online (Sandbox Code Playgroud)
我只是迭代并复制所有非零元素,但允许上三角形为零.
我想从某个向量中获取一个矩阵x=(x_1,x_2, ..., x_I),其中该矩阵中的每一行 i 对应于x(i) := (x_1,...,x_{i-1},x_{i+1},...,x_I)。
我知道
from sklearn.cross_validation import LeaveOneOut
I = 30
myrowiterator = LeaveOneOut(I)
for eachrow, _ in myrowiterator:
print(eachrow) # prints [1,2,...,29]
# [0,2,...,29] and so on ...
Run Code Online (Sandbox Code Playgroud)
提供一个例程来获取上述矩阵的每一行。但我宁愿直接一步获得矩阵,直接对该矩阵进行操作,而不是循环遍历它的行。这会节省我一些计算时间。