'numpy.ndarray' object has no attribute 'remove'
Question:
I have an array of arrays and I’m trying to find the lowest non-zero value among them all.
minima = []
for array in K: #where K is my array of arrays (all floats)
if 0.0 in array:
array.remove(0.0)
minima.append(min(array))
print min(minima)
This yields
AttributeError: 'numpy.ndarray' object has no attribute 'remove'
I thought array.remove()
was the way to remove an element. What am I doing wrong?
Answers:
Looks like you want .delete:
minima = []
for array in K: #where K is my array of arrays (all floats)
minimum = min(array)
minima = np.delete(array, minimum)
minima.append(min(array))
print(minima)
And it seems to work for me, hence:
In [5]: a = np.array([1,3,5])
In [6]: a = np.delete(a, 0)
In [7]: a
Out[7]: array([3, 5])
I think I’ve figured it out.
The .remove()
method is a list method, not an ndarray method.
So by using array.tolist()
I can then apply the .remove()
method and get the required result.
Just cast it to a list:
my_list = list(array)
You can then get all the list
methods from there.
This does not directly address your question, as worded, but instead condenses some of the points made in the other answers/comments.
The following demonstrates how to, effectively, remove the value 0.0 from a NumPy array.
>>> import numpy as np
>>> arr = np.array([0.1, 0.2, 0.0, 1.0, 0.0]) # NOTE: Works if more than one value == 0.0
>>> arr
array([0.1, 0.2, 0. , 1. , 0. ])
>>> indices = np.where(arr==0.0)
>>> arr = np.delete(arr, indices)
>>> arr
array([0.1, 0.2, 1. ])
Another useful method is numpy.unique(), which, “Returns the sorted unique elements of an array.”:
>>> import numpy as np
>>> arr = np.array([0.1, 0.2, 0.0, 1.0, 0.0])
>>> arr = np.unique(arr)
>>> arr
array([0. , 0.1, 0.2, 1. ])
use the following script, it works for me,
array1=tolist(array)
I have an array of arrays and I’m trying to find the lowest non-zero value among them all.
minima = []
for array in K: #where K is my array of arrays (all floats)
if 0.0 in array:
array.remove(0.0)
minima.append(min(array))
print min(minima)
This yields
AttributeError: 'numpy.ndarray' object has no attribute 'remove'
I thought array.remove()
was the way to remove an element. What am I doing wrong?
Looks like you want .delete:
minima = []
for array in K: #where K is my array of arrays (all floats)
minimum = min(array)
minima = np.delete(array, minimum)
minima.append(min(array))
print(minima)
And it seems to work for me, hence:
In [5]: a = np.array([1,3,5])
In [6]: a = np.delete(a, 0)
In [7]: a
Out[7]: array([3, 5])
I think I’ve figured it out.
The .remove()
method is a list method, not an ndarray method.
So by using array.tolist()
I can then apply the .remove()
method and get the required result.
Just cast it to a list:
my_list = list(array)
You can then get all the list
methods from there.
This does not directly address your question, as worded, but instead condenses some of the points made in the other answers/comments.
The following demonstrates how to, effectively, remove the value 0.0 from a NumPy array.
>>> import numpy as np
>>> arr = np.array([0.1, 0.2, 0.0, 1.0, 0.0]) # NOTE: Works if more than one value == 0.0
>>> arr
array([0.1, 0.2, 0. , 1. , 0. ])
>>> indices = np.where(arr==0.0)
>>> arr = np.delete(arr, indices)
>>> arr
array([0.1, 0.2, 1. ])
Another useful method is numpy.unique(), which, “Returns the sorted unique elements of an array.”:
>>> import numpy as np
>>> arr = np.array([0.1, 0.2, 0.0, 1.0, 0.0])
>>> arr = np.unique(arr)
>>> arr
array([0. , 0.1, 0.2, 1. ])
use the following script, it works for me,
array1=tolist(array)