I jst начал использовать numpy на этой неделе и очень смущен этим. кажется очень отличным от обычных функций python.Я использую массив numpy произвольно сгенерированных упорядоченных пар, мне нужно определить, являются ли упорядоченные пары разными типами треугольников
С массивом, размером 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))
############# Добавление к вопросу #############
У меня есть алгоритмы, которые принимают каждый соответствующий х и y координаты, которые находят там длину и углы для каждого треугольника. Я бы опубликовал, но его слишком много кода. А также теперь у меня есть функции, которые используют углы и длины сторон, чтобы найти Scalene, Equilateral, Right Isoceles и Non-right Isoceles.
Мой вопрос теперь более связан с индексом. В качестве примера я буду использовать равносторонний треугольник, потому что именно с этим мы работаем.
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
Если вы хотите увидеть алгоритмы я использовал, чтобы получить (ACXY, ABXY, CBXY) дайте мне знать, и я постараюсь, чтобы очистить их и размещать ITSO его читабельны и менее продолжительны. – LizardWizard