我有一个矩阵:
> 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。
答案 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的的sign
和abs
功能如下面
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)