Python Forum
add.at() method - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Data Science (https://python-forum.io/forum-44.html)
+--- Thread: add.at() method (/thread-27093.html)



add.at() method - Truman - May-25-2020

import numpy as np 
x = np.zeros(10)
np.add.at(x, i, 1)
print(x)
output
Output:
[0. 1. 1. 0. 1. 0. 0. 0. 1. 0.]
I just don't get how this at() method works. X becomes array that contains all zeroes. Then happens what?


RE: add.at() method - KavyaL - May-26-2020

This is how at() method works in the above case
np.add.at(x,i,1)
Here x will be array with all zeros as known,
Then i will be indexing to the array x, suppose you have given i = range(0,5), then this considers x[0],x[1],x[2],x[3],x[4].. so i is used to provide index for the array you need to change. i can be tuple also.
As you have given 1 as third attribute ,it adds one to the above indexes..

suppose your code was like this
import numpy as np
x = np.zeros(10)
i = range(0,5)
np.add.at(x, i, 1)
print(x)

output:
[1. 1. 1. 1. 1. 0. 0. 0. 0. 0.]
there fore adding one to all the indexes you have defined

#np.add.at(x, [0,2,3,4], 1) giving i as tuple is also fine
output for this will be as [1. 0. 1. 1. 1. 0. 0. 0. 0. 0.]


RE: add.at() method - pyzyx3qwerty - May-26-2020

@KavyaL please use proper code tags while posting


RE: add.at() method - KavyaL - May-26-2020

import numpy as np
x = np.zeros(10)
i = range(0,5)
np.add.at(x, i, 1)
print(x)
Output:
[1. 1. 1. 1. 1. 0. 0. 0. 0. 0.]
Here x will be array with all zeros as known,
Then i will be indexing to the array x, suppose you have given i = range(0,5), then this considers x[0],x[1],x[2],x[3],x[4].. so i is used to provide index for the array you need to change. i can be tuple also.
As you have given 1 as third attribute ,it adds one to the above indexes..


RE: add.at() method - Truman - May-26-2020

KavyaL, thank you for your explanation. I understand it perfectly. In my example, i is not defined. That's the mistake.