我正在尝试在golang中编写一些机器学习代码。我想办法让一个函数处理一个N维的切片,因为不同的维度需要返回不同的类型。这是一个将2d切片拆分为测试/训练集的示例函数。
func SplitData(data [][]int, testPerc float32) ([][]int, [][]int) {
size := len(data)
testSlice := int(float32(size) * testPerc)
return data[0:testSlice], data[testSlice:]
}
在python中,我不需要担心数组的尺寸。是否有“golang”方式来解决这个问题?
编辑:我知道golang中没有泛型。我的问题更多的是关于泛型之外的解决方案,例如接受的答案所指出的。答案 0 :(得分:1)
参见例如gorgonia.org/tensor
如何做到这一点:“密集”的多维数组。
概念很简单,定义类似的类型:
type Tensor struct {
Dimensions []int // e.g. {2, 2}
Values []int // e.g. {1, 2, 3, 4}
}
其中Dimensions
包含n维数组的n维,Values
是值的线性存储。不变量是所有Dimensions
上的乘积是Values
的长度。您可以使用简单的O(1)算法访问不同的维度。尺寸为零的张量(空Dimensions
切片)是单个值。
上面提到的包已经完成了所有这些。