JuliaPy / JuliaPy/PyCall.jl

Numpy structured array unintuitive handling

Aperta
#610 6 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Julia
Stelle
1.5k
Fork
186
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Hi,

Thank you for the great work on this package.

I have to deal with a [numpy structured array](https://docs.scipy.org/doc/numpy-1.15.0/user/basics.rec.html) variable that I've imported into Julia. I've called this variable `my_simulations`.

To see the different fields inside this variable, I can call `my_simulations[:dtype]` and I get
```PyObject dtype([('drugs', 'O'), ('Vms', 'O'), ('I_tots', 'O'), ('Ycs', 'O'), ('Cais', 'O'), ('Nais', 'O'), ('caSRs', 'O'), ('ts', 'O')])```.
The first element of each tuple in the list corresponds to the names of the keys (numpy calls them fields) in this variable.

In Python, you can access each key using `my_simulations['keyname']`, e.g. `my_simulations['Vms']`. I expected that in Julia you could access each key using `my_simulations["keyname"]`, e.g. `my_simulations["Vms"]`. But this doesn't work and I get the following error message
```ERROR: KeyError: key "Vms" not found```

The workaround I've found is to call `get(my_sims,"keyname")` e.g. `get(my_sims,"Vms")` which works. But the method `my_simulations["keyname"]` would be more intuitive and closer to the Python syntax.

Thank you!

My version of PyCall is v"1.18.5+".

Best,
Max

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Reproduce the reported behavior with a NumPy structured array imported through PyCall, comparing my_simulations["Vms"] with get(my_simulations,"Vms"). Inspect PyCall's object-indexing behavior and existing tests around Python objects. Done means string indexing accesses structured-array fields as requested without regressing the working get form.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
julia, numpy
Ambito
data, tooling
Tipo di issue
Funzionalità
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.