'Truth value of an array is ambiguous' error with np.fromfunctionHow do I sort a dictionary by value?ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()The truth value of an array with more than one element is ambiguous error? pythonPython Pandas add column for row-wise max value of selected columnsThe truth value of an array with more than one element is ambiguous. Use a.any() or a.all()?Error: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() while using csr_matrixValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() using while loopif array in list of arrays returns Value ErrorTruth value of an array is ambiguous
Position representation of spin states and spin operators
Where to connect the fuse and why?
Copy group of files (Filename*) to backup (Filename*.bak)
How did they film the Invisible Man being invisible in 1933?
Is it OK to throw pebbles and stones in streams, waterfalls, ponds, etc.?
Why isn't UDP with reliability (implemented at Application layer) a substitute of TCP?
Could all three Gorgons turn people to stone, or just Medusa?
Did the Russian Empire have a claim to Sweden? Was there ever a time where they could have pursued it?
Checkmate in 1 on a Tangled Board
Subset of knight's move in chess.
Russian equivalents of 能骗就骗 (if you can cheat, then cheat)
Should Catholics in a state of grace call themselves sinners?
Equatorial oceanic river caused by tides
Have any large aeroplanes been landed — safely and without damage — in locations that they could not be flown away from?
Rear derailleur got caught in the spokes, what could be a root cause
What are the children of two Muggle-borns called?
Installed software from source, how to say yum not to install it from package?
Where can I find my serialized Sitecore items?
Active wildlife outside the window- Good or Bad for Cat psychology?
How useful would a hydroelectric power plant be in the post-apocalypse world?
A quine of sorts
Deducing Lambda Capture Types
How to track mail undetectably?
Dynamic Sql Query - how to add an int to the code?
'Truth value of an array is ambiguous' error with np.fromfunction
How do I sort a dictionary by value?ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()The truth value of an array with more than one element is ambiguous error? pythonPython Pandas add column for row-wise max value of selected columnsThe truth value of an array with more than one element is ambiguous. Use a.any() or a.all()?Error: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() while using csr_matrixValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() using while loopif array in list of arrays returns Value ErrorTruth value of an array is ambiguous
I'm trying to use the numpy.fromfunction to compute an array defined by a function but I got an error that I do not understand.
d_matrix is a distance matrix and the error message I get is "The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()". I put dtype = int in the np.fromfunction because I read that could the solution.
def v(r, i):
return 1/N*np.sum(d_matrix[i,:]<r)
def rho_barre(r):
return quad(rho, r, np.inf)[0]
def grad_F(i, j):
return quad( lambda r : ( (v(r, i) + v(r, j))/2 - v_r) * rho_barre(max(r, d_matrix[i,j])), 0, np.inf)[0]
Grad_F = np.fromfunction(lambda i, j: grad_F(i,j), (N,N), dtype=int)
I'd like to know if someone may help me with this error and more generally if someone has an idea of what to do in order to compute an array defined by a function. I'm not sure I'm doing the fastest thing
python numpy
add a comment |
I'm trying to use the numpy.fromfunction to compute an array defined by a function but I got an error that I do not understand.
d_matrix is a distance matrix and the error message I get is "The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()". I put dtype = int in the np.fromfunction because I read that could the solution.
def v(r, i):
return 1/N*np.sum(d_matrix[i,:]<r)
def rho_barre(r):
return quad(rho, r, np.inf)[0]
def grad_F(i, j):
return quad( lambda r : ( (v(r, i) + v(r, j))/2 - v_r) * rho_barre(max(r, d_matrix[i,j])), 0, np.inf)[0]
Grad_F = np.fromfunction(lambda i, j: grad_F(i,j), (N,N), dtype=int)
I'd like to know if someone may help me with this error and more generally if someone has an idea of what to do in order to compute an array defined by a function. I'm not sure I'm doing the fastest thing
python numpy
1
fromfunction
passes the wholenp.indices(N,N)
to your function, at once. It doesn't do it iteratively. Look at the code forfromfunction
. I'd suggest using a double loop over therange(N)
s instead. Posters often misunderstand the use offromfunction
.
– hpaulj
Mar 25 at 16:33
add a comment |
I'm trying to use the numpy.fromfunction to compute an array defined by a function but I got an error that I do not understand.
d_matrix is a distance matrix and the error message I get is "The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()". I put dtype = int in the np.fromfunction because I read that could the solution.
def v(r, i):
return 1/N*np.sum(d_matrix[i,:]<r)
def rho_barre(r):
return quad(rho, r, np.inf)[0]
def grad_F(i, j):
return quad( lambda r : ( (v(r, i) + v(r, j))/2 - v_r) * rho_barre(max(r, d_matrix[i,j])), 0, np.inf)[0]
Grad_F = np.fromfunction(lambda i, j: grad_F(i,j), (N,N), dtype=int)
I'd like to know if someone may help me with this error and more generally if someone has an idea of what to do in order to compute an array defined by a function. I'm not sure I'm doing the fastest thing
python numpy
I'm trying to use the numpy.fromfunction to compute an array defined by a function but I got an error that I do not understand.
d_matrix is a distance matrix and the error message I get is "The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()". I put dtype = int in the np.fromfunction because I read that could the solution.
def v(r, i):
return 1/N*np.sum(d_matrix[i,:]<r)
def rho_barre(r):
return quad(rho, r, np.inf)[0]
def grad_F(i, j):
return quad( lambda r : ( (v(r, i) + v(r, j))/2 - v_r) * rho_barre(max(r, d_matrix[i,j])), 0, np.inf)[0]
Grad_F = np.fromfunction(lambda i, j: grad_F(i,j), (N,N), dtype=int)
I'd like to know if someone may help me with this error and more generally if someone has an idea of what to do in order to compute an array defined by a function. I'm not sure I'm doing the fastest thing
python numpy
python numpy
asked Mar 25 at 15:47
MarcMMarcM
284 bronze badges
284 bronze badges
1
fromfunction
passes the wholenp.indices(N,N)
to your function, at once. It doesn't do it iteratively. Look at the code forfromfunction
. I'd suggest using a double loop over therange(N)
s instead. Posters often misunderstand the use offromfunction
.
– hpaulj
Mar 25 at 16:33
add a comment |
1
fromfunction
passes the wholenp.indices(N,N)
to your function, at once. It doesn't do it iteratively. Look at the code forfromfunction
. I'd suggest using a double loop over therange(N)
s instead. Posters often misunderstand the use offromfunction
.
– hpaulj
Mar 25 at 16:33
1
1
fromfunction
passes the whole np.indices(N,N)
to your function, at once. It doesn't do it iteratively. Look at the code for fromfunction
. I'd suggest using a double loop over the range(N)
s instead. Posters often misunderstand the use of fromfunction
.– hpaulj
Mar 25 at 16:33
fromfunction
passes the whole np.indices(N,N)
to your function, at once. It doesn't do it iteratively. Look at the code for fromfunction
. I'd suggest using a double loop over the range(N)
s instead. Posters often misunderstand the use of fromfunction
.– hpaulj
Mar 25 at 16:33
add a comment |
1 Answer
1
active
oldest
votes
As pointed out in the comments, np.fromfunction
provides arrays of indices, not individual index tuples. This is a common mistake, but working with index arrays is usually more efficient. If you really must produce a single value at a time, you could use a function like this instead:
import numpy as np
def fromfunction_iter(function, shape, dtype=None):
# Iterator over all index tuples
iter = np.ndindex(*shape)
# First index
idx = next(iter)
# Produce first value
value = function(*idx)
# Make it into a NumPy value
value = np.asarray(value, dtype=dtype)
# Make output array of the right data type
out = np.empty(shape, dtype=value.dtype)
# Set first value
out[idx] = value
# Fill rest of values
for idx in iter:
out[idx] = function(*idx)
return out
However, this will generally be much slower, and in fact if you have to run some iterative algorithm like this with NumPy data you may need to look into something like Numba if you want to make it run really fast.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55341588%2ftruth-value-of-an-array-is-ambiguous-error-with-np-fromfunction%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
As pointed out in the comments, np.fromfunction
provides arrays of indices, not individual index tuples. This is a common mistake, but working with index arrays is usually more efficient. If you really must produce a single value at a time, you could use a function like this instead:
import numpy as np
def fromfunction_iter(function, shape, dtype=None):
# Iterator over all index tuples
iter = np.ndindex(*shape)
# First index
idx = next(iter)
# Produce first value
value = function(*idx)
# Make it into a NumPy value
value = np.asarray(value, dtype=dtype)
# Make output array of the right data type
out = np.empty(shape, dtype=value.dtype)
# Set first value
out[idx] = value
# Fill rest of values
for idx in iter:
out[idx] = function(*idx)
return out
However, this will generally be much slower, and in fact if you have to run some iterative algorithm like this with NumPy data you may need to look into something like Numba if you want to make it run really fast.
add a comment |
As pointed out in the comments, np.fromfunction
provides arrays of indices, not individual index tuples. This is a common mistake, but working with index arrays is usually more efficient. If you really must produce a single value at a time, you could use a function like this instead:
import numpy as np
def fromfunction_iter(function, shape, dtype=None):
# Iterator over all index tuples
iter = np.ndindex(*shape)
# First index
idx = next(iter)
# Produce first value
value = function(*idx)
# Make it into a NumPy value
value = np.asarray(value, dtype=dtype)
# Make output array of the right data type
out = np.empty(shape, dtype=value.dtype)
# Set first value
out[idx] = value
# Fill rest of values
for idx in iter:
out[idx] = function(*idx)
return out
However, this will generally be much slower, and in fact if you have to run some iterative algorithm like this with NumPy data you may need to look into something like Numba if you want to make it run really fast.
add a comment |
As pointed out in the comments, np.fromfunction
provides arrays of indices, not individual index tuples. This is a common mistake, but working with index arrays is usually more efficient. If you really must produce a single value at a time, you could use a function like this instead:
import numpy as np
def fromfunction_iter(function, shape, dtype=None):
# Iterator over all index tuples
iter = np.ndindex(*shape)
# First index
idx = next(iter)
# Produce first value
value = function(*idx)
# Make it into a NumPy value
value = np.asarray(value, dtype=dtype)
# Make output array of the right data type
out = np.empty(shape, dtype=value.dtype)
# Set first value
out[idx] = value
# Fill rest of values
for idx in iter:
out[idx] = function(*idx)
return out
However, this will generally be much slower, and in fact if you have to run some iterative algorithm like this with NumPy data you may need to look into something like Numba if you want to make it run really fast.
As pointed out in the comments, np.fromfunction
provides arrays of indices, not individual index tuples. This is a common mistake, but working with index arrays is usually more efficient. If you really must produce a single value at a time, you could use a function like this instead:
import numpy as np
def fromfunction_iter(function, shape, dtype=None):
# Iterator over all index tuples
iter = np.ndindex(*shape)
# First index
idx = next(iter)
# Produce first value
value = function(*idx)
# Make it into a NumPy value
value = np.asarray(value, dtype=dtype)
# Make output array of the right data type
out = np.empty(shape, dtype=value.dtype)
# Set first value
out[idx] = value
# Fill rest of values
for idx in iter:
out[idx] = function(*idx)
return out
However, this will generally be much slower, and in fact if you have to run some iterative algorithm like this with NumPy data you may need to look into something like Numba if you want to make it run really fast.
answered Mar 25 at 18:14
jdehesajdehesa
31.2k4 gold badges39 silver badges60 bronze badges
31.2k4 gold badges39 silver badges60 bronze badges
add a comment |
add a comment |
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55341588%2ftruth-value-of-an-array-is-ambiguous-error-with-np-fromfunction%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
fromfunction
passes the wholenp.indices(N,N)
to your function, at once. It doesn't do it iteratively. Look at the code forfromfunction
. I'd suggest using a double loop over therange(N)
s instead. Posters often misunderstand the use offromfunction
.– hpaulj
Mar 25 at 16:33