python-3.x - 如何从numpy数组中删除元素对?
问题描述
我有一个数组:
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]])
coordinates
变量包含变量中的所有对centralLines
。我想centralLines
从coordinates
. 这个怎么做??
使用以下coordinates
代码计算变量:
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
解决方案
解决方案
解决此问题的一种简单方法是扫描原始数组并保留不同的对:
result = np.array([position for position in coordinates if position not in centralLines])
但是,我必须警告您,此解决方案未优化。也许其他人提供了更快的矢量化解决方案。
旁注 1
我建议您遵循一些 python 语法的通用准则,即PEP8。
旁注 2
只导入一次 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))
旁注 3
平方根已经包含在 numpy 中,如np.sqrt
. 然后,您可以预先导入math
模块。
推荐阅读
- angular - 第一列固定在垫表中
- swift - Swift 函数返回得太早
- python - 登录时运行的脚本不使用互联网
- java - java中使用split函数将字符串转换为字符串数组的运行时错误
- ruby - Groovy 中 Ruby 的 string.unpack('N') 等价物是什么?
- html - 通过输入文本更新 2 个 url 参数并选择
- c# - Make Entity Framework reuse a value
- google-api - 没有使用谷歌联系人 API 3.0 版获取电话号码响应字段
- sql - 子查询返回超过 1 个值
- javascript - 命名动态创建的文本区域