Пример #1
0
        public static MFullArray <long> ToArray(MIntegralRange <long> range)
        {
            var result = new MFullArray <long>(1, range.Count);

            for (int i = 0; i < range.Count; ++i)
            {
                result[i] = range.First + i;
            }
            return(result);
        }
Пример #2
0
        public static MFullArray <double> ToArray(MIntegralRange <double> range)
        {
            var result = new MFullArray <double>(1, range.Count);

            for (int i = 0; i < range.Count; ++i)
            {
                result[i] = (double)(range.First + i);
            }
            return(result);
        }
Пример #3
0
        public static void ArraySet <[AnyPrimitive] TScalar>(
            MFullArray <TScalar> array, MIntegralRange <double> rowIndices, MIntegralRange <double> columnIndices, MFullArray <TScalar> values)
        {
            if (array.IsHigherDimensional)
            {
                throw new MArrayShapeException();
            }

            int destRowCount = array.shape.RowCount;

            if (rowIndices.First < 1 || rowIndices.Last > destRowCount)
            {
                throw new ArgumentOutOfRangeException("rowIndices");
            }

            int destColumnCount = array.shape.ColumnCount;

            if (columnIndices.First < 1 || columnIndices.Last > destColumnCount)
            {
                throw new ArgumentOutOfRangeException("columnIndices");
            }

            int valueRowCount    = rowIndices.Count;
            int valueColumnCount = columnIndices.Count;

            if (values.shape.RowCount != valueRowCount || values.shape.ColumnCount != valueColumnCount || values.IsHigherDimensional)
            {
                throw new MArrayShapeException();
            }

            for (int j = 0; j < valueColumnCount; ++j)
            {
                int destColumnIndex = columnIndices.First + j - 1;
                for (int i = 0; i < valueRowCount; ++i)
                {
                    int destRowIndex = rowIndices.First + i - 1;
                    var value        = values.elements[j * valueRowCount + i];
                    array.elements[destColumnIndex * destRowCount + destRowIndex] = value;
                }
            }
        }
Пример #4
0
        public static MFullArray <TScalar> ArrayGet <[AnyPrimitive] TScalar>(
            MFullArray <TScalar> array, MIntegralRange <double> rowIndices, MIntegralRange <double> columnIndices)
        {
            if (array.IsHigherDimensional)
            {
                throw new MArrayShapeException();
            }

            int sourceRowCount = array.shape.RowCount;

            if (rowIndices.First < 1 || rowIndices.Last > sourceRowCount)
            {
                throw new ArgumentOutOfRangeException("rowIndices");
            }

            int sourceColumnCount = array.shape.ColumnCount;

            if (columnIndices.First < 1 || columnIndices.Last > sourceColumnCount)
            {
                throw new ArgumentOutOfRangeException("columnIndices");
            }

            int resultRowCount    = rowIndices.Count;
            int resultColumnCount = columnIndices.Count;
            var result            = new MFullArray <TScalar>(resultRowCount, resultColumnCount);

            for (int j = 0; j < resultColumnCount; ++j)
            {
                int sourceColumnIndex = columnIndices.First + j - 1;
                for (int i = 0; i < resultRowCount; ++i)
                {
                    int sourceRowIndex = rowIndices.First + i - 1;
                    var sourceValue    = array.elements[sourceColumnIndex * sourceRowCount + sourceRowIndex];
                    result.elements[j * resultRowCount + i] = sourceValue;
                }
            }

            return(result);
        }
Пример #5
0
 public static void ArraySet <[AnyPrimitive] TScalar>(
     MFullArray <TScalar> array, double rowIndex, MIntegralRange <double> columnIndices, MFullArray <TScalar> values)
 {
     ArraySet(array, MIntegralRange <double> .FromValue(ToInt(rowIndex)), columnIndices, values);
 }
Пример #6
0
 public static MFullArray <TScalar> ArrayGet <[AnyPrimitive] TScalar>(
     MFullArray <TScalar> array, double rowIndex, MIntegralRange <double> columnIndices)
 {
     return(ArrayGet(array, MIntegralRange <double> .FromValue(ToInt(rowIndex)), columnIndices));
 }
Пример #7
0
        public static MFullArray <TScalar> ArrayGet <[AnyPrimitive] TScalar>(MFullArray <TScalar> array, MIntegralRange <double> indices)
        {
            Contract.Requires(array != null);

            if (indices.First < 1 || indices.Last > array.Count)
            {
                throw new ArgumentOutOfRangeException("indices");
            }

            var result = new MFullArray <TScalar>(1, indices.Count);

            Array.Copy(array.BackingArray, indices.First - 1, result.BackingArray, 0, indices.Count);
            return(result);
        }
Пример #8
0
 public static MIntegralRange <double> GetDimensionRange <[AnyNumeric] TScalar>(MFullArray <TScalar> array, int index)
 {
     Contract.Requires(array != null);
     return(MIntegralRange <double> .FromFirstCount(1, array.shape.GetDimensionSize(index)));
 }
Пример #9
0
 public bool Equals(MIntegralRange <TReal> other)
 {
     return(first == other.first && last == other.last);
 }