Answering this question, some others and I were actually wrong by considering that the following would work:
Say one has
test = [ [ [0], 1 ],
[ [1], 1 ]
]
import numpy as np
nptest = np.array(test)
What is the reason behind
>>> nptest[:,0]==[1]
array([False, False], dtype=bool)
while one has
>>> nptest[0,0]==[1],nptest[1,0]==[1]
(False, True)
>>> nptest==[1]
array([[False, True],
[False, True]], dtype=bool)
or
>>> nptest==1
array([[False, True],
[False, True]], dtype=bool)
Is it the degeneracy in term of dimensions which causes this.
nptest
is a 2D array of object dtype, and the first element of each row is a list.
nptest[:, 0]
is a 1D array of object dtype, each of whose elements are lists.
When you do nptest[:,0]==[1]
, NumPy does not perform an elementwise comparison of each element of nptest[:,0]
against the list [1]
. It creates as high-dimensional an array as it can from [1]
, producing the 1D array np.array([1])
, and then broadcasts the comparison, comparing each element of nptest[:,0]
against the integer 1.
Since no list in nptest[:, 0]
is equal to 1, all elements of the result are False.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With