我有一个数组:
coordinates = np.asarray(list(product(seq, seq)))-fieldSize_va/2.0
此坐标为numpy.ndarray类型,具有1600个元素(对)。可以看作是:
array([[-4.5,-4.5], [-4.5,-4.26923077], [-4.5,-4.03846154], ..., [4.5,4.03846154], [4.5,4.26923077], [4.5,4.5]])
我还有另一个数组:
centralLines = np.asarray([(xa,ya),(xa,yb),(xb,ya),(xb,yb)])
其值为:
array([[0.11538462,0.11538462], [0.11538462,-0.11538462], [-0.11538462,0.11538462], [-0.11538462,-0.11538462]])
坐标的变量包含 centralLines 变量中的所有对。我想从坐标中删除 centralLines的对元素。怎么做??
坐标变量是使用以下代码计算的:
import math
import numpy as np
from itertools import product
from numpy import linspace,degrees,random
N=40*40
fieldSize_va = 9
seq = linspace(0, fieldSize_va,math.sqrt(N))
coordinates = np.asarray(list(product(seq, seq)))-fieldSize_va/2.0
答案 0 :(得分:0)
一种简单的解决方法是扫描原始数组并保留不同的对:
result = np.array([position for position in coordinates if position not in centralLines])
但是,我必须警告您该解决方案尚未优化。也许其他人会提供更快的矢量化解决方案。
我建议您遵循python语法的一些常见准则,即PEP8。
仅一次导入numpy可以提高代码的可读性!
重复:
import numpy as np
from numpy import linspace
seq = linspace(0, fieldSize_va, math.sqrt(N))
更好:
import numpy as np
seq = np.linspace(0, fieldSize_va, math.sqrt(N))
numpy中已经包含平方根,如np.sqrt
。然后,您可以预先导入math
模块。