9 ms·
Numpy syntax comes to mind. The extra commas often aren’t valid pure Python but are required for some operations on numpy arrays. I don’t know how this works un
by ohyoutravel 5y ago
Numpy syntax comes to mind. The extra commas often aren’t valid pure Python but are required for some operations on numpy arrays. I don’t know how this works under the hood, but expect it’s a state machine under the numpy ndarray looking for the extra commas and such.
i.e. some_array[0:5,0] which isn’t valid pure Python notation.
- kzrdude 5y agoExtra commas are "valid in pure python" in the following sense that I can demonstrate. Open ipython3 In [3]: class Test: ...: def __getitem__(self, index): ...: print(index) ...: In [4]: Test()[1, 2, 1:3, ..., :] (1, 2, slice(1, 3, None), Ellipsis, slice(None, None, None)) It's valid and we get the complicated tuple of integers, slices, ellipsis etc as printed. Numpy has existed for a long time. Its needs have been taken care of in upstream Python, to a big extent, and other libraries can use the same features.
- ohyoutravel 5y agoInteresting! Neither myself nor my coworkers could get the snippet I posted working outside the context of an ndarray, so I had speculated at that time that it there was something else going on under the hood. You seem to have a much better grasp of Python than us, would you mind posting an example where the snipped I posted successfully accesses data from an array in pure Python? That way I can not only take the L, but correct the record and learn something in the process.
- kzrdude 5y agoThis program is quick & lazy but it uses a 1D python list and pretends it's a 2D list. It implements 2D slicing, giving you a square subset just like ndarray. It doesn't intend to be all correct or nice or useful. https://www.pythonmorsels.com/p/2rk5t/ https://www.pythonmorsels.com/p/2rk5t/ Is laziness a virtue? I reused the slicing implementation in `range(foo)[index]` so I didn't need to do that logic myself.
- ohyoutravel 5y agoVery nice!