python - 当我只需要 1 个时,循环打印 2 个内部列表的长度
问题描述
我有一个 xy 坐标列表,如下所示: [[xcoords][ycoords]] 因为我的 For 循环使用整个列表的长度,它会打印 90 个奇怪的结果,而实际上我只需要一半。
当我尝试访问前半部分的长度时,出现此错误: 索引 2 超出轴 0 的范围,大小为 2
import numpy as np
import matplotlib.pyplot as plt
import shapely.geometry
from shapely.geometry import LineString
from shapely.geometry import Point, Polygon
import descartes
quality = 7
x = np.linspace(-1,1,quality)
y = np.linspace(-1,1,quality)
X,Y = np.meshgrid(x,y)
polycoords = [[-1, 1], [-1, 0.5], [0, 0.5], [0, 1]]
clip_poly = shapely.geometry.Polygon(polycoords)
positions = np.vstack([Y.ravel(), X.ravel()])
fig = plt.figure()
ax = fig.add_subplot(111)
polygonbuilding = ax.add_patch(descartes.PolygonPatch(clip_poly, fc='pink', alpha=0.3))
origin = [0,0]
for i in range(len(positions)):
for j in range(len(positions[i])):
plt.scatter(*positions[::-1])
x1 = positions[0][j]
y1 = positions[1][j]
line = LineString([origin, (x1, y1)])
ax.plot(*np.array(line).T, color='none', linewidth=1, solid_capstyle='round')
if line.intersects(clip_poly) == True:
ax.plot(*np.array(line).T, color='red', linewidth=1, solid_capstyle='round')
else:
ax.plot(*np.array(line).T, color='green', linewidth=1, solid_capstyle='round')
print (origin, [x1,y1],line.intersects(clip_poly)/2)
plt.show()
我得到什么 VS 我需要什么(红色)
解决方案
这是因为您的 [positions] 变量中有一个 dup,请尝试打印它:
import numpy as np
import matplotlib.pyplot as plt
import shapely.geometry
from shapely.geometry import LineString
from shapely.geometry import Point, Polygon
import descartes
quality = 7
x = np.linspace(-1,1,quality)
y = np.linspace(-1,1,quality)
X,Y = np.meshgrid(x,y)
polycoords = [[-1, 1], [-1, 0.5], [0, 0.5], [0, 1]]
clip_poly = shapely.geometry.Polygon(polycoords)
positions = np.vstack([Y.ravel(), X.ravel()])
print(positions)
[[-1. -1. -1. -1. -1. -1.
-1. -0.66666667 -0.66666667 -0.66666667 -0.66666667 -0.66666667
-0.66666667 -0.66666667 -0.33333333 -0.33333333 -0.33333333 -0.33333333
-0.33333333 -0.33333333 -0.33333333 0. 0. 0.
0. 0. 0. 0. 0.33333333 0.33333333
0.33333333 0.33333333 0.33333333 0.33333333 0.33333333 0.66666667
0.66666667 0.66666667 0.66666667 0.66666667 0.66666667 0.66666667
1. 1. 1. 1. 1. 1.
1. ]
[-1. -0.66666667 -0.33333333 0. 0.33333333 0.66666667
1. -1. -0.66666667 -0.33333333 0. 0.33333333
0.66666667 1. -1. -0.66666667 -0.33333333 0.
0.33333333 0.66666667 1. -1. -0.66666667 -0.33333333
0. 0.33333333 0.66666667 1. -1. -0.66666667
-0.33333333 0. 0.33333333 0.66666667 1. -1.
-0.66666667 -0.33333333 0. 0.33333333 0.66666667 1.
-1. -0.66666667 -0.33333333 0. 0.33333333 0.66666667
1. ]]
推荐阅读
- excel - 表列数据类型格式未出现在 Excel for Microsoft 分析服务模型中
- json - 表中的 json 数据在 asp.net 核心中显示为未定义
- java - Solr 通配符评分和 NGramFIlterFactory
- angular - 如何在Angular中上传文件后创建超时页面
- java - 使用记录时的 Java getter/setter 命名约定
- powerbi - Power BI 用户的默认 Power View
- networking - 在 SIM8200EA-M2 上强制 5G
- javascript - 不能通过 slick slider 实现这种类型的滑块
- c# - 如何将数据从虚拟助手传递给技能,反之亦然
- python - 我可以在李克特量表上使用哪些数据增强技术?