我有一个np.ndarray
(称之为arr
),看起来像这样:
# python 3.7
import numpy as np
my_dtype = [("x", "float32"), ("y", "float32"),
("some_more", "int32"), ("and_more_stuff", "uint8")] #
part1 = np.zeros(5, dtype=my_dtype) # various lengths (here e.g. 5, 6 and 7)
part2 = np.zeros(6, dtype=my_dtype)
part3 = np.zeros(7, dtype=my_dtype)
# ... an a priori unknown number of "parts". Also of course there are values inside, not just zeros.
arr = np.array([part1, part2, part3])
(也许我不应该使用 numpy 数组来处理此类数据?)
现在我想用arr
. 例如,我想在所有子数组(单个数字)中的所有值“x”和“y”中找到总最小值。我的解决方案看起来相当糟糕,这意味着我不明白如何使用结构化数组(尽管阅读了文档和官方教程):
arr[0][["x", "y"]][1] = (-3., 4.5) # put in some values as an example
all_x_y_coords= np.array([[list(mytuple) for mytuple in mylist] for mylist in
[list(part[["x", "y"]]) for part in arr]])
print(np.min(np.min(all_x_y_coords))) # gives -3. as desired, but at what cost?!
做这样的事情显然是不切实际的。如何计算我想要的最小值?我想做的下一件事是将旋转矩阵应用于所有“x,y”。在我编造一些比上面的代码更可怕的东西之前,我想我最好理解我做错了什么。非常感谢您的帮助!