如何在三维数组

时间:2018-03-16 09:49:22

标签: python numpy tensor

在我python & numpy的经验有限的情况下,我在网上搜索了很长时间。但没用。请帮助或尝试提供一些如何实现这一点的想法。

A=[3,-1, 4]

B = array([1,1,1],[1,-1,1],[1,1,-1])

The most close one in B is [1, -1, 1]
  1. 正负的重量>关闭(A,B)
  2. 找到B中最接近的一个(所有相同的Pos或Neg)
  3. B1 = array([1,1,1], [1,-1,1], [1,1, -1], [3,1,4])

    The result is [1,-1,1]

    在寻找一个像样的XX解决方案之后,发现那里的一切都很难使用。

    提前致谢。

2 个答案:

答案 0 :(得分:1)

一种可能的方式:

A = np.array([3,-1, 4])

B = np.array([[1,1,1],[1,-1,1],[1,1,-1]])

# distances array-wise
np.abs(B - A)

# sum of absolute values of distances (smallest is closest)
np.sum(np.abs(B - A), axis=1)

# index of smallest (in this case index 1)
np.argmin(np.sum(np.abs(B - A), axis=1))

# all in one line (take array 1 from B)
result = B[np.argmin(np.sum(np.abs(B - A), axis=1))]

答案 1 :(得分:0)

试试这个,

import numpy as np
A=np.array([3,-1, 4])
B =np.array([[1,1,1],[1,-1,1],[1,1,-1]])
x=np.inf
for val  in B:
    if (x>(np.absolute(A-val)).sum())and((np.sign(A)==np.sign(val)).all()==True):   
        x=(np.absolute(A-val)).sum()
        y=val
print x
print y