我这周刚开始使用 numpy,对此感到非常困惑。似乎与普通的 python 函数有很大不同。
对于一个形状为 1000X6 的数组,有没有办法在数组中逐行检查并检查例如等边三角形。我有 6 列,因此每行有三元组,每个点有 2 个整数。
import numpy as np
pnts = np.random.randint(0,50,(1000, 6))
我还认为创建 3 个这样的数组可能会更好:
import numpy as np
A = np.random.random((10,2))
B = np.random.random((10,2))
C = np.random.random((10,2))
创建有序对,然后使用算法找到三角形。
有没有更好的方法来创建一个表示 1000 个三元组有序对的数组,以及如何在该数组中找到三角形,例如等边三角形。
我现在做了一些改变。我为 x 坐标和 y 坐标制作了两个数组。
x = np.random.randint(0,10,(3,1000))
y = np.random.randint(0,10,(3,1000))
############# 添加到问题#############
我有算法可以获取每个匹配的 x 和 y 坐标,这些坐标可以找到每个三角形的边长和角度。我会发布,但它的代码太多了。而且现在我还有使用角度和边长来查找不等边线、等边线、右等腰线和非右等腰线的功能。
我的问题现在与索引有关。我将再次使用等边三角形作为示例,因为这是我们一直在使用的。
E = np.column_stack((ACXY,ABXY,CBXY))
ES = np.logical_and(E[:,0] == E[:,1], E[:,1] == E[:,2])
我有这个找到等边三角形。
- ACXY = the distance from point A to C
- ABXY = the distance from point A to B
- CBXY = the distance from point C to B
我希望能够获取所有等边三角形的坐标三元组,对它们进行索引并将它们放入一个名为 E_Tri 的新数组中。我认为我不需要创建布尔值的函数。我认为也许 If: else: 语句可能是更好的方法。
这也可能有帮助,我将显示E = np.column_stack((ACXY,ABXY,CBXY))
以帮助理解 (E) 的数组。
[[ 4. 4.47213595 7.21110255]
[ 3.60555128 2.23606798 5.83095189]
[ 2.23606798 9.05538514 8.54400375]
...,
[ 3.60555128 9.05538514 6.08276253]
[ 8.94427191 8.54400375 1. ]
[ 10.63014581 1. 10. ]]
E 看起来像这样。希望这是有道理的,如果没有,请告诉我。
可能是这样的,即使这只是增加问题。
E = np.column_stack((ACXY,ABXY,CBXY))
equilateral = []
def E_Tri(E):
if E[:,0] == E[:,1] and E[:,1] == E[:,2]:
equilateral.append(E_Tri)
else:
return E