Сделайте некоторую математическую операцию над массивом numpy - PullRequest
0 голосов
/ 14 октября 2019

У меня есть один массив numpy, похожий на:

 [array([580, 201]), array([167, 701]), array([167, 694]), array([979, 725]), array([ 200, 1271]), array([1005, 1266]), array([ 180, 1568]), array([ 994, 1591]), array([ 539, 1862])]

, и я хочу извлечь 580 из 201 и 201, чтобы найти минимальное и максимальное значения x и y. Так что я сравниваю другие координаты с x_min, x_max, y_min и y_max, и если координаты находятся в диапазоне, чтобы они добавлялись, иначе мы создадим новый массив.

Я попытался найти элемент извлечения массива, но затем не могу найти какое-либо решение для выполнения операции с ним.


coordinates = [array([580, 201]), array([167, 701]), array([167, 694]), array([979, 725]), array([ 200, 1271]), array([1005, 1266]), array([ 180, 1568]), array([ 994, 1591]), array([ 539, 1862])]

for i in coordinates_new[0]:
    print(i)


output: 580 
201

Я попытался сделать извлечение только 580 и 201, чтобы япо сравнению с этим с другими координатами, когда я использую i [0], это даст ошибку, что IndexError: неверный индекс и скалярная переменная

1 Ответ

0 голосов
/ 14 октября 2019

Я не уверен, что понял вопрос, но только для начала:

import numpy as np
aa =[[580, 201], [167, 701], [167, 694], [979, 725], [ 200, 1271], [1005, 1266], [ 180, 1568], 
     [ 994, 1591], [ 539, 1862]]
print(f' list :\n{aa}\n')

bb=np.array(aa)
print(f' np.array :\n {bb}\n')

cc=np.transpose(bb)
print(f' transposed array :\n {cc}\n')

print(f' xmax: {np.max(cc[0])}')
print(f' ymax: {np.max(cc[1])}')
print(f' xmin: {np.min(cc[0])}')
print(f' ymin: {np.min(cc[1])}')

output:

list :
[[580, 201], [167, 701], [167, 694], [979, 725], [200, 1271], [1005, 1266], [180, 1568], [994, 1591], [539, 1862]]

 np.array :
 [[ 580  201]
 [ 167  701]
 [ 167  694]
 [ 979  725]
 [ 200 1271]
 [1005 1266]
 [ 180 1568]
 [ 994 1591]
 [ 539 1862]]

 transposed array :
 [[ 580  167  167  979  200 1005  180  994  539]
 [ 201  701  694  725 1271 1266 1568 1591 1862]]

 xmax: 1005
 ymax: 1862
 xmin: 167
 ymin: 201

применение некоторых условий к элементам массива:

bb=[]  # empty list
for a in aa:
    print(a)
    if a[0]>200: bb.append(a)   # you can have two conditions, of course, a[1]>..
print()
for b in bb: 
    print(b) 

выход:

[580, 201]
[167, 701]
[167, 694]
[979, 725]
[200, 1271]
[1005, 1266]
[180, 1568]
[994, 1591]
[539, 1862]

[580, 201]
[979, 725]
[1005, 1266]
[994, 1591]
[539, 1862]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...