[Numpy-discussion] Deleting a row from a matrix
Travis Oliphant
oliphant.travis at ieee.org
Fri Aug 25 19:16:09 EDT 2006
Sebastian Haase wrote:
> On Friday 25 August 2006 08:01, Travis Oliphant wrote:
>
>> Travis Oliphant wrote:
>>
>>>> Now of course: I often needed to "insert" a column, row or section, ...
>>>> ? I made a quick and dirty implementation for that myself:
>>>> def insert(arr, i, entry, axis=0):
>>>> """returns new array with new element inserted at index i along axis
>>>> if arr.ndim>1 and if entry is scalar it gets filled in (ref.
>>>> broadcasting)
>>>>
>>>> note: (original) arr does not get affected
>>>> """
>>>> if i > arr.shape[axis]:
>>>> raise IndexError, "index i larger than arr size"
>>>> shape = list(arr.shape)
>>>> shape[axis] += 1
>>>> a= N.empty(dtype=arr.dtype, shape=shape)
>>>> aa=N.transpose(a, [axis]+range(axis)+range(axis+1,a.ndim))
>>>> aarr=N.transpose(arr, [axis]+range(axis)+range(axis+1,arr.ndim))
>>>> aa[:i] = aarr[:i]
>>>> aa[i+1:] = aarr[i:]
>>>> aa[i] = entry
>>>> return a
>>>>
>>> Sure, it makes sense to parallel the delete function.
>>>
>> Although there is already and insert function present in numpy....
>>
>> -Travis
>>
>
> Yeah - I saw that ...
> maybe one could introduce consistent namings like
> arr.copy_insert()
> arr.copy_delete()
> arr.copy_append()
>
I've come up with adding the functions (not methods at this point)
deletefrom
insertinto
appendto (syntatic sugar for concatenate but with a separate argument
for the array and the extra stuff) --- is this needed?
These functions will operate along a particular axis (default is axis=0
to match concatenate).
Comments?
-Travis
More information about the NumPy-Discussion
mailing list