using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tensorflow.NumPy;
namespace TensorFlowNET.UnitTest.NumPy
{
///
/// https://numpy.org/doc/stable/reference/routines.array-creation.html
///
[TestClass]
public class ArrayCreationTest : EagerModeTestBase
{
[TestMethod]
public void empty_zeros_ones_full()
{
var empty = np.empty((2, 2));
var zeros = np.zeros((2, 2));
var ones = np.ones((2, 2));
var full = np.full((2, 2), 0.1f);
}
[TestMethod]
public void arange()
{
var x = np.arange(3);
AssetSequenceEqual(new[] { 0, 1, 2 }, x.ToArray());
x = np.arange(3f);
Assert.IsTrue(Equal(new float[] { 0, 1, 2 }, x.ToArray()));
var y = np.arange(3, 7);
AssetSequenceEqual(new[] { 3, 4, 5, 6 }, y.ToArray());
y = np.arange(3, 7, 2);
AssetSequenceEqual(new[] { 3, 5 }, y.ToArray());
}
[TestMethod]
public void array()
{
var x = np.array(1, 2, 3);
AssetSequenceEqual(new[] { 1, 2, 3 }, x.ToArray());
x = np.array(new[,] { { 1, 2 }, { 3, 4 }, { 5, 6 } });
AssetSequenceEqual(new[] { 1, 2, 3, 4, 5, 6 }, x.ToArray());
}
[TestMethod]
public void eye()
{
var x = np.eye(3, k: 1);
Assert.IsTrue(Equal(new double[] { 0, 1, 0, 0, 0, 1, 0, 0, 0 }, x.ToArray()));
}
[TestMethod]
public void linspace()
{
var x = np.linspace(2.0, 3.0, num: 5);
Assert.IsTrue(Equal(new double[] { 2, 2.25, 2.5, 2.75, 3 }, x.ToArray()));
x = np.linspace(2.0, 3.0, num: 5, endpoint: false);
Assert.IsTrue(Equal(new double[] { 2, 2.2, 2.4, 2.6, 2.8 }, x.ToArray()));
}
[TestMethod]
public void meshgrid()
{
var x = np.linspace(0, 1, num: 3);
var y = np.linspace(0, 1, num: 2);
var (xv, yv) = np.meshgrid(x, y);
Assert.IsTrue(Equal(new double[] { 0, 0.5, 1, 0, 0.5, 1 }, xv.ToArray()));
Assert.IsTrue(Equal(new double[] { 0, 0, 0, 1, 1, 1 }, yv.ToArray()));
(xv, yv) = np.meshgrid(x, y, sparse: true);
Assert.IsTrue(Equal(new double[] { 0, 0.5, 1 }, xv.ToArray()));
AssetSequenceEqual(new long[] { 1, 3 }, xv.shape.dims);
Assert.IsTrue(Equal(new double[] { 0, 1 }, yv.ToArray()));
AssetSequenceEqual(new long[] { 2, 1 }, yv.shape.dims);
}
}
}