Numpy arrays have a fixed size, hence you cannot simply delete an element from them. The simplest way to achieve what you want is to use slicing:
a = a[3:]
This will create a new array starting with the 4th element of the original array.
For certain scenarios, slicing is just not enough. If you want to create a subarray consisting of specific elements from the original array, you can use another array to select the indices:
>>> a = arange(10, 20)
>>> a[[1, 4, 5]]
array([11, 14, 15])
So basically, a[[1,4,5]] will return an array that consists of the elements 1,4 and 5 of the original array.
Numpy arrays have a fixed size, hence you cannot simply delete an element from them. The simplest way to achieve what you want is to use slicing:
a = a[3:]
This will create a new array starting with the 4th element of the original array.
For certain scenarios, slicing is just not enough. If you want to create a subarray consisting of specific elements from the original array, you can use another array to select the indices:
>>> a = arange(10, 20)
>>> a[[1, 4, 5]]
array([11, 14, 15])
So basically, a[[1,4,5]] will return an array that consists of the elements 1,4 and 5 of the original array.
It works for me:
import numpy as np
a = np.delete(a, k)
where "a" is your numpy arrays and k is the index position you want delete.
Hope it helps.
If you use numpy arrays, then use them as arrays and not as lists
numpy does comparison elementwise for the entire array, which can then be used to select the relevant subarray. This also removes the need for the inner loop.
>>> a = np.array([[datetime(2010, 10, 26, 11, 5, 28, 157404), 14.1],
[datetime(2010, 10, 26, 11, 5, 30, 613066), 17.2],
[datetime(2010, 10, 26, 11, 5, 31, 613066), 17.2],
[datetime(2010, 10, 26, 11, 5, 32, 613066), 17.2],
[datetime(2010, 10, 26, 11, 5, 33, 613066), 17.2],
[datetime(2010, 10, 26, 11, 5, 38, 613066), 17.2]],
dtype=object)
>>> start = datetime(2010, 10, 26, 11, 5, 28, 157405)
>>> end = datetime(2010, 10, 26, 11, 5, 33, 613066)
>>> (a[:,0] > start)&(a[:,0] < end)
array([False, True, True, True, False, False], dtype=bool)
>>> a[(a[:,0] > start)&(a[:,0] < end)]
array([[2010-10-26 11:05:30.613066, 17.2],
[2010-10-26 11:05:31.613066, 17.2],
[2010-10-26 11:05:32.613066, 17.2]], dtype=object)
just to make sure we still have datetimes in there:
>>> b = a[(a[:,0] > start)&(a[:,0] < end)]
>>> b[0,0]
datetime.datetime(2010, 10, 26, 11, 5, 30, 613066)
NumPy arrays are fixed in size. Use lists instead.
Problem deleting array elements: "cannot delete array elements".
Basic Python help? I need to let user to delete elements from an array
Cannot delete element from django arrayfield - Stack Overflow
delete - Can't remove element from the array - Unix & Linux Stack Exchange
stack = [3, 4, 5, 22]
while True:
input1 = input("Give me number: ")
if input1 == "":
break
try:
index = int(input1) - 1
if 0 <= index < len(stack):
del stack[index]
else:
print("Invalid index. Please enter a valid index.")
except ValueError:
print("Invalid input. Please enter a valid integer.")
print("Remaining elements in stack:")
for user in stack:
print(user)
stack = [3, 4, 5, 22]
while True:
input1 = input("Give me number: ")
if input1 == "":
break
try:
index = int(input1) - 1
if 0 <= index < len(stack):
del stack[index]
else:
print("Invalid index. Please enter a valid index.")
except ValueError:
print("Invalid input. Please enter a valid integer.")print("Remaining elements in stack:")
for user in stack:
print(user)
My intention is to let user to delete certain index from the array. However, it seems like after removing an element from the stack using del stack[input1], the remaining elements shift to fill the gap. However, your loop continues to iterate over the original indices, which can lead to incorrect results.
Can anyone help me here?