You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于numpy二维数组统计坐标系象限内点及直线x11=x12上方点数

嘿,这问题我熟!假设你的NumPy二维数组x里每一行都对应坐标系里的一个点(比如[x坐标, y坐标]),那咱们分两步来搞定统计需求:

一、统计各象限内的点数量

首先得明确各象限的判断规则:

  • 第一象限:x>0 且 y>0
  • 第二象限:x<0 且 y>0
  • 第三象限:x<0 且 y<0
  • 第四象限:x>0 且 y<0
  • 坐标轴上的点(x=0 或 y=0)不属于任何象限,也可以单独统计

用NumPy的布尔索引就能轻松实现,核心思路是生成逐元素的布尔判断数组,再用np.sum()统计True的数量(因为True会被当作1计算)。

示例代码如下:

import numpy as np

# 先构造一个示例数组,你可以替换成自己的x
points = np.array([[2, 3], [-1, 4], [-5, -2], [3, -6], [0, 1], [4, 0]])

# 提取所有点的x、y坐标分量
x_coords = points[:, 0]
y_coords = points[:, 1]

# 统计各象限点数量
quad1 = np.sum((x_coords > 0) & (y_coords > 0))
quad2 = np.sum((x_coords < 0) & (y_coords > 0))
quad3 = np.sum((x_coords < 0) & (y_coords < 0))
quad4 = np.sum((x_coords > 0) & (y_coords < 0))
on_axis = np.sum((x_coords == 0) | (y_coords == 0))

# 输出结果
print(f"第一象限:{quad1} 个点")
print(f"第二象限:{quad2} 个点")
print(f"第三象限:{quad3} 个点")
print(f"第四象限:{quad4} 个点")
print(f"坐标轴上的点:{on_axis} 个")

注意这里要用NumPy的逻辑运算符&(与)和|(或),而不是Python原生的and/or,因为要对数组进行逐元素的逻辑判断。

二、统计直线x==y上方的点数量

直线x==y就是坐标系里的对角线,所谓“上方”的点,其实就是y坐标大于x坐标的点(对应坐标系里,每个点的y值比x值大,就落在这条直线的上方)。

同样用布尔索引+求和的方式实现:

# 统计直线x==y上方的点数量
above_line = np.sum(y_coords > x_coords)
print(f"直线x==y上方的点数量:{above_line}")

如果你的“上方”定义是x坐标大于y坐标(比如某些特殊坐标系的设定),只需要把判断条件改成x_coords > y_coords就行。

内容的提问来源于stack exchange,提问作者daz bones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:57:37