Я написал функцию в F #, которая использует KMeans (http://accord-framework.net/docs/html/T_Accord_MachineLearning_KMeans.htm).В F # в чем разница между float [,] и float [] [] и как мне инициализировать float [] []?
Функция, называемая вычислением, требует float [] [], но я никогда не видел этого в F #. только float [,].
Пример кода приведен ниже.
let ConverterForCluster =
создать массив из нуля 50 х 50. Это будет населен, как только я интерфейс это с существующим приложением, которое возвращает число с плавающей точкой [,], на данный момент я пытаюсь попасть написать Конвертер из [,] на [] []
Мой расстояние массив объявлен как
let mutable Distance = Array2D.zeroCreate 50 50
KMeans представляет собой метод из библиотеки Accord.NET (ссылка в верхней части).
let km = KMeans(5)
Я создаю новую переменную dm, так что функция Compute of km (ниже) может ее принять. Однако использование Unchecked.defaultof создает нулевой массив, который является ошибкой
let dm : float[][] = Unchecked.defaultof<float[][]>
for i = 0 to 49 do
for j = 0 to 49 do
Я полагаю, что это преобразование из поплавка [,] плавать [] [] это хорошо, но я еще не инициализируюсь дм, так что я могу» т подтверждают, что 100%
dm.[i].[j] <- Convert.ToDouble Distance.[i, j]
Это функция, которая нуждается в поплавок [] [] и не будет принимать [,]
let label = km.Compute(dm)
label
исключение:
System.NullReferenceException было необработанное сообщение: необработанное исключение типа «System.NullReferenceException» произошло в cluster.exe Дополнительная информация: Ссылка на объект не указывает на экземпляр объекта.
Эта ошибка на следующей строке
dm.[i].[j] <- Convert.ToDouble Distance.[i, j]
потому дм равна нулю из-за линии ниже, как я не знаю, как она инициализируется
let dm : float[][] = Unchecked.defaultof<float[][]>
Мой вопрос заключается в том инициализировать этот тип массива? И в чем разница?
Если я пропустил что-либо из этого, сообщите мне, или если это не имеет смысла. Благодарю.
Короче 'поплавок [,]' является [многомерным массивом] (https://en.wikipedia.org/wiki/Array_data_structure#Multidimensional_arrays) и 'плавать [] []' является [Невыровненным массивом ] (https://en.wikipedia.org/wiki/Jagged_array). –
T [] [] Является всего лишь массивом массивов, поскольку T [,] фактически является одномерным массивом. –
Я голосую, чтобы закрыть как дубликат, потому что на оба вопроса отвечает другой вопрос. В чем разница в ответе, и как инициализировать ответ на ссылку F # WikiBooks.Вы можете пометить этот вопрос как дубликат, который мгновенно изменит его статус. :) –