Tôi có numpy.array
s trong đó các cột chứa các kiểu dữ liệu khác nhau và các cột cũng phải có các hàm khác nhau được áp dụng cho chúng. Tôi cũng có các hàm trong một mảng.Numpy: Áp dụng một mảng các hàm cho cùng một mảng có độ dài 2d như thể nhân yếu tố? (sử dụng hàm python làm toán tử?)
Hãy nói rằng:
a = array([[ 1, 2.0, "three"],
[ 4, 5.0, "six" ]], dtype=object)
functions_arr = array([act_on_int, act_on_float, act_on_str])
tôi chắc chắn có thể nghĩ ra cách để làm điều này bằng cách chia điều, nhưng có một điều mà dường như tự nhiên nhất đối với tôi là để suy nghĩ về nó như một nhân elementwise với phát sóng, và các chức năng như các toán tử. Vì vậy, tôi muốn làm một cái gì đó giống như
functions_arr*a
và nhận được ảnh hưởng của
array([[act_on_int(1), act_on_float(2.0), act_on_str("three")],
[act_on_int(4), act_on_float(5.0), act_on_str("six") ]])
Bạn có biết một cách để đạt được một cái gì đó dọc theo những đường?
Chỉnh sửa: Tôi đã thay đổi định nghĩa của mảng trong câu hỏi để bao gồm dtype=[object]
khi mọi người chỉ ra điều này quan trọng đối với mảng lưu trữ các loại theo cách tôi dự định.
Cảm ơn câu trả lời và nhận xét của bạn! Tôi đã chấp nhận người gửi trả lời và cảm thấy điều này là rất gần với những gì tôi đã có trong tâm trí.
Vì có vẻ như đã có một số nhầm lẫn về cách tôi xem xét các hoạt động được như nhân, hãy để tôi làm rõ rằng với một ví dụ khác:
Như bạn cũng biết, một hoạt động như:
v = array([1,2,3])
u = array([[5,7,11],
[13,17,19]])
v*u
sẽ phát sóng v
trên các hàng của u
và mang lại
array([[ 1*5, 2*7, 3*11],
[1*13, 2*17, 3*19]])
tức
array([[ 5, 14, 33],
[13, 34, 57]])
Nếu bây giờ chúng tôi đã thay thế v
với ví dụ các del operator chúng ta sẽ có (sau đây là không thực sự làm việc mã python :)
V = array([(d/dx),(d/dy),(d/dz)])
u = array([[5,7,11],
[13,17,19]])
V*u
năng suất (trong tinh thần)
array([[(d/dx)5, (d/dy)7, (d/dz)11]],
[(d/dx)13,(d/dy)17,(d/dz)19]])
Tôi thừa nhận lấy đạo hàm của một loạt các hằng số sẽ không phải là số nhiều nhất thú vị về hoạt động, do đó, hãy thay thế u
bằng một số biểu thức toán học biểu tượng trong x
, y
và z
. Ở mức nào, tôi hy vọng điều này ít nhất làm cho rõ ràng hơn cả lý luận của tôi và bit về "(sử dụng một hàm python như một toán tử?)" Trong tiêu đề.
Tôi không nghĩ điều này trả lời câu hỏi. OP hỏi làm thế nào để có được phát sóng trong tình huống này. Mã này không phát sóng. –