Open xiaozhu1988 opened 2 months ago
Can you provide the equivalent python snippet for comparison?
Can you provide the equivalent python snippet for comparison?
import numpy as np
data = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100,110,120])
conlist = [data <= 30, (data >=50) & (data < 100), data>=100]
choiselist = [66, 77, 88]
dataReClass = np.select(conlist, choiselist, default=0)
print(dataReClass)
the result is below
[66 66 66 0 77 77 77 77 77 88 88 88]
sorry for reply so late,
The operators were only defined for scalars, now I added overloads for arrays and it works:
[TestMethod]
public void IssueByXiaozhu1988()
{
//>>> data = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120])
//>>> (data >= 50) & (data < 100)
//array([False, False, False, False, True, True, True, True, True,
// False, False, False])
var data = np.array(new[] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120 });
Console.WriteLine(((data >= 50) & (data < 100)).repr);
Assert.AreEqual("array([False, False, False, False, True, True, True, True, True,\n False, False, False])", ((data >= 50) & (data < 100)).repr);
Console.WriteLine(((data >= 50) | (data < 100)).repr);
Assert.AreEqual("array([ True, True, True, True, True, True, True, True, True,\n True, True, True])", ((data >= 50) | (data < 100)).repr);
Console.WriteLine(((data >= 50) ^ (data < 100)).repr);
Assert.AreEqual("array([ True, True, True, True, False, False, False, False, False,\n True, True, True])", ((data >= 50) ^ (data < 100)).repr);
}
thanks for your reply I will try it tomorrow best wishes👌👌👌
---Original--- From: "Meinrad @.> Date: Sun, Sep 1, 2024 16:59 PM To: @.>; Cc: @.**@.>; Subject: Re: [SciSharp/Numpy.NET] NDArray operation '&' (Issue #129)
The operators were only defined for scalars, now I added overloads for arrays and it works: [TestMethod] public void IssueByXiaozhu1988() { //>>> data = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]) //>>> (data >= 50) & (data < 100) //array([False, False, False, False, True, True, True, True, True, // False, False, False]) var data = np.array(new[] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120 }); Console.WriteLine(((data >= 50) & (data < 100)).repr); Assert.AreEqual("array([False, False, False, False, True, True, True, True, True,\n False, False, False])", ((data >= 50) & (data < 100)).repr); Console.WriteLine(((data >= 50) | (data < 100)).repr); Assert.AreEqual("array([ True, True, True, True, True, True, True, True, True,\n True, True, True])", ((data >= 50) | (data < 100)).repr); Console.WriteLine(((data >= 50) ^ (data < 100)).repr); Assert.AreEqual("array([ True, True, True, True, False, False, False, False, False,\n True, True, True])", ((data >= 50) ^ (data < 100)).repr); }
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>
this is the code i write by C#
there is an error in the following line conditions[1] = (ndarrya > 50)&(ndarrya <= 100); Visual studio warn that 'the operation & can not be userd between NDarray[bool] I just want to know how to write the Multiple Conditions wish for you reply