如何将矩阵中的符号值提取到新矩阵中

时间:2019-02-02 05:47:44

标签: python numpy matrix matrix-multiplication submatrix

我有一个矩阵:

>    A[-1 0 1 0.5] 
>    [-0.2 0.8 1 -1] 
>     [0.4 0.8 1 -0.1] 
>     [-0.6 0.4 -1 1]

我想从这个提取子矩阵..所以我想要什么程序做的是做一个矩阵保存迹象......像这样:

B[-1 +1 +1 +1]
[-1 +1 +1 -1]
[+1 +1 +1 -1]
[-1 +1 -1 +1]

和包含元素值的矩阵C

    C[1 0 1 0.5] 
    [0.2 0.8 1 1] 
     [0.4 0.8 1 0.1] 
     [0.6 0.4 1 1]

因此,当B和C相乘时,它们就构成了矩阵A。

3 个答案:

答案 0 :(得分:1)

将A放入numpy数组并使用numpy.sign函数。因为numpy会为您循环,所以更容易。

import numpy
A=numpy.array([[-1,0,1,0.5],[-0.2 0.8 -1, 1],...])
B=numpy.sign(A)
C=A*B

答案 1 :(得分:0)

您可以使用 let ref = Database.database().reference() var GPSlatdata : Double! ref.child("GPSData/devices/1/latitude").observeSingleEvent(of: .value) { (snapshot) in if let latitudefire = snapshot.value as? Double { self.latLabel.text = "\(latitudefire)" //output, now assigning to global variable for other use GPSlatdata = latitudefire } } absolute从numpy的方法。

sign

所以B为:

import numpy as np

a = np.array([[-1, 0, 1, 0.5], [-0.2, 0.8, 1, -1], [0.4, 0.8, 1, -0.1], [-0.6, 0.4, -1, 1]])
b = np.sign(a)
c = np.absolute(a)

和c是:

array([[-1.,  0.,  1.,  1.],
       [-1.,  1.,  1., -1.],
       [ 1.,  1.,  1., -1.],
       [-1.,  1., -1.,  1.]])

唯一的区别是元素0的符号被认为是0,而不是您想要的+1。
编辑
如有用的评论中所述,要按预期方式获得矩阵b的输出(0的符号为+1),您可以这样做:

array([[1. , 0. , 1. , 0.5],
       [0.2, 0.8, 1. , 1. ],
       [0.4, 0.8, 1. , 0.1],
       [0.6, 0.4, 1. , 1. ]])

答案 2 :(得分:0)

使用numpy的的signabs功能如下面

import numpy as np
A=np.array([[-1,0,1,0.5],[-0.2,0.8,1,-1], [0.4,0.8,1,-0.1], [-0.6,0.4,-1,1]])
B=np.sign(A)
C=np.abs(A)
print(B*C == A)