精华内容
下载资源
问答
  • 多维数据集中包含海量的复杂高维数据,如何对这些数据进行科学的理解、分析使用,是数据挖掘领域的一个重点难点课题.针对传统可视化算法无法解决高维数据多属性的可视化问题,算法复杂、适用性较差的不足,提出基于...
  • 文章目录多维数组和高维点code使用逻辑 多维数组和高维点 code import numpy as np a = np.array([[[1, 2, 3], [11, 3, 4]], [[1, 2, 3], [11, 3, 4]]]) # %% # 打印出a的维度数(即嵌套深度) # 高维数组:嵌套深 ...

    多维数组和高维点

    code

    import numpy as np
    a = np.array([[[1, 2, 3],
                   [11, 3, 4]],
                  [[1, 2, 3],
                   [11, 3, 4]]])
    
    # %%
    # 打印出a的维度数(即嵌套深度)
    # 高维数组:嵌套深
    print(a.ndim)
    print(a.shape)
    # 高维点:单个点的坐标的刻画维度多(可以用一个n元组表达)(d0,d1,d2,d3,d4,..dn-1):
    ''' 
    例如:
    一维点:(d0)
    二维点:(d0,d1)
    三维点:(d0,d1,d2):例如(1,2,3),(x=1,y=2,z=3)
    ...
    总之,要区分好两种"维度"的含义
    ndarray(多维度数组)对象的shape属性可以体现该数组在各个维度上的度量宽度
        '''
    b = np.array(
        [1, 2, 3, 4, 5, 6]
        )
    print(b.ndim, "\n", b.shape)
    
    # %%
    ls=range(120)
    c=np.array(ls).reshape(2,2,5,3,2)
    print(c)
    
    # %%
    
    

    shape的结果解读:
    可以从shape对应的元组从后往前解读,
    对应的,对于多位数组,可以从内往外解读
    比如,shape=(2,2,5,3,2)
    最后一个值是2,则最深层的一维数组有2个基础元素(0维元素)
    倒2个值是3,则次深的数组(二维数组)是由3个上述规格的一维数组构成的二维数组,依次类推…
    同时,我们可以为shape元组按"权"来理解,即,像理解十进制数中的个十百千万…这些权(但有些不同,这些权之间的关系取决于具体的shape元组),左侧的数较右边的数是高位

    (2,2,5,3,2)
    [[[[[  0   1]
        [  2   3]
        [  4   5]]
    
       [[  6   7]
        [  8   9]
        [ 10  11]]
    
       [[ 12  13]
        [ 14  15]
        [ 16  17]]
    
       [[ 18  19]
        [ 20  21]
        [ 22  23]]
    
       [[ 24  25]
        [ 26  27]
        [ 28  29]]]
    
    
      [[[ 30  31]
        [ 32  33]
        [ 34  35]]
    
       [[ 36  37]
        [ 38  39]
        [ 40  41]]
    
       [[ 42  43]
        [ 44  45]
        [ 46  47]]
    
       [[ 48  49]
        [ 50  51]
        [ 52  53]]
    
       [[ 54  55]
        [ 56  57]
        [ 58  59]]]]
    
     [[[[ 60  61]
        [ 62  63]
        [ 64  65]]
    
       [[ 66  67]
        [ 68  69]
        [ 70  71]]
    
       [[ 72  73]
        [ 74  75]
        [ 76  77]]
    
       [[ 78  79]
        [ 80  81]
        [100 101]]
    
       [[102 103]
        [104 105]
        [106 107]]
    
       [[108 109]
        [110 111]
        [112 113]]
    
       [[114 115]
        [116 117]
        [118 119]]]]]
    

    使用逻辑

    在这里插入图片描述

    展开全文
  • 二维数据的处理 3.1 二维数据的读入处理 3.2 二维数据的写入处理 3.3 二维数据的逐一处理 三、多维数据 四、高维数据 以下内容来自于网课学习笔记。 使用的环境: Window10+64位操作系统 PyCharm+Python3.7 数据的...


    以下内容来自于网课学习笔记。

    使用的环境:

    • Window10+64位操作系统
    • PyCharm+Python3.7

    数据的操作周期:

    一、 一维数据

    由对等关系的有序或者无序数据构成,采用线性方式组织

    3.24, 3.2, 4.3, 4.5, 6.7, 5.5 
    
    • 对应列表、数组和集合等概念

    1. 一维数据的表示

    ⭕⭕ 如果数据间有序:使用列表类型

    ls=[2.233, 3.22, 4.32]
    
    • 列表类型可以表达一维有序数据
    • for循环可以遍历数据,进而对每个数据进行处理

    ⭕⭕ 如果数据间无序:使用集合类型

    st={3.123, 5.323, 4.65}
    
    • 集合类型可以表达一维无序数据
    • for循环可以遍历数据,进而对每个数据进行处理

    2. 一维数据的存储

    2.1 空格分隔

    2.2 逗号分隔

    2.3 其他方式

    3. 一维数据的处理

    3.1 一维数据的读入处理.split()

    ⭕⭕ 从空格分隔的文件中读入数据

    f=open("D:/workspace/f.txt","r",encoding="UTF-8")
    txt=f.read()
    print(txt)
    ls=txt.split()
    print(ls)
    f.close()
    


    ⭕⭕ 从特殊符号分割的文件中读入数据

    f=open("D:/workspace/f.txt","r",encoding="UTF-8")
    txt=f.read()
    print(txt)
    ls=txt.split("$")
    print(ls)
    f.close()
    

    3.2 一维数据的写入处理.join()

    ⭕⭕ 采用空格分隔方式将数据写入文件

    ls=["中国","美国","日本"]
    f=open("D:/workspace/f.txt","w",encoding="UTF-8")
    f.write(" ".join(ls))
    f.close()
    


    ⭕⭕ 采用特殊分隔方式将数据写入文件

    ls=["中国","美国","日本"]
    f=open("D:/workspace/f.txt","w",encoding="UTF-8")
    f.write("$".join(ls))
    f.close()
    

    二、二维数据

    由多个一维数据构成,是一维数据的组合形式

    1. 二维数据的表示

    • 列表类型可以表达二维数据
    • 使用二维列表

    ⭕⭕ 使用列表类型

    [  [3.23, 3.12, 3.33],
       [3.14, 3.04, 3.12]   ]
    
    • 使用两层for循环遍历每个元素
    • 外层列表中每个元素可以对应一行,也可以对应一列

    ⭕⭕ 数据维度是数据的组织形式

    2. CSV格式与二维数据存储

    2.1 CSV数据存储格式



    2.2 二维数据的存储

    3. 二维数据的处理

    3.1 二维数据的读入处理

    从CSV格式的文件中读入数据

    ls=[]
    for line in f:
        line=line.replace("\n"," ")
        ls.append(line.split(","))
    f.close()
    

    3.2 二维数据的写入处理

    将数据写入CSV格式的文件

    ls=[[], [], []]
    f=open(fname,"w")
    for item in ls:
        f.write(",".join(item)+"\n")
    f.close()
    

    3.3 二维数据的逐一处理

    二层循环

    ls=[[1,2],[3,4],[5,6]]
    for row in ls:
        for column in row:
            print(column)
    

    三、多维数据

    有一维或二维数据在新维度上扩展形成

    四、高维数据

    仅利用最重要的二元关系展示数据间的复杂结构

    展开全文
  • 通过主成分分析法将多维数据降维,让高维数据可以可视化。
  • I have a list that have different length in each dimension like below:list1=[[2,3,4],[1],[77,8,27,12],[25,15]]and I have another list with the same number of element like:list2=[a,b,c,d,e,f,g,h,i,j]I ...

    I have a list that have different length in each dimension like below:

    list1=[[2,3,4],[1],[77,8,27,12],[25,15]]

    and I have another list with the same number of element like:

    list2=[a,b,c,d,e,f,g,h,i,j]

    I want to reshape my list2 as list1 and to process two lists together in a for loop.

    解决方案

    Here's a kind of cute way.

    list1 = [[2,3,4],[1],[77,8,27,12],[25,15]]

    list2 = list("abcdefghij")

    list2_iterator = iter(list2)

    list2_reshaped = [[next(list2_iterator) for _ in sublist] for sublist in list1]

    print(list2_reshaped)

    Out: [['a', 'b', 'c'], ['d'], ['e', 'f', 'g', 'h'], ['i', 'j']]

    I don't know if it's possible with pure comprehensions.

    展开全文
  • 加载数据血清蛋白质组图谱诊断可用于区分患者非患者的观测值。图谱是使用表面增强激光解吸电离 (SELDI) 蛋白质质谱法产生的。这些特征是特定质荷比下的离子强度水平。此示例用到了使用 WCX2 蛋白质阵列生成的高...

    加载数据

    血清蛋白质组图谱诊断可用于区分患者和非患者的观测值。图谱是使用表面增强激光解吸电离 (SELDI) 蛋白质质谱法产生的。这些特征是特定质荷比下的离子强度水平。

    此示例用到了使用 WCX2 蛋白质阵列生成的高分辨率卵巢癌数据集。经过一些预处理步骤(类似于 Bioinformatics Toolbox™ 示例预处理原始质谱数据中所示的步骤),数据集现在包含两个变量 obs 和 grp。obs 变量包含 216 个观测值,具有 4000 个特征。grp 中的每个元素定义 obs 的对应行所属的组。

    load ovariancancer;

    whos

    Name Size Bytes Class Attributes

    grp 216x1 25056 cell

    obs 216x4000 3456000 single

    将数据分成训练集和测试集

    此示例中使用的一些函数调用 MATLAB® 内置随机数生成函数。要得到与此示例完全相同的结果,请执行以下命令,将随机数生成器设置为已知状态。否则,您的结果可能会有所不同。

    rng(8000,'twister');

    模型对训练数据的处理性能(再代入性能)并不能很好地反映模型对独立测试集的处理性能。再代入性能通常会过于乐观。要预测所选模型的性能,您需要使用另一个数据集(而不是用来构建模型的数据集)来评估模型性能。此处,我们使用 cvpartition 将数据分成大小为 160 的训练集和大小为 56 的测试集。训练集和测试集的组比例与 grp 中的组比例大致相同。我们使用训练数据选择特征,并使用测试数据判断所选特征的性能。这通常称为留出法验证。另一种简单但广泛使用的模型评估和选择方法是交叉验证,本示例稍后会进行说明。

    holdoutCVP = cvpartition(grp,'holdout',56)

    holdoutCVP =

    Hold-out cross validation partition

    NumObservations: 216

    NumTestSets: 1

    TrainSize: 160

    TestSize: 56

    dataTrain = obs(holdoutCVP.training,:);

    grpTrain = grp(holdoutCVP.training);

    使用全部特征对数据进行分类存在的问题

    如果不先减少特征的数量,有些分类算法在处理本示例中使用的数据集时可能会失败,因为特征的数量远远大于观测值的数量。在本示例中,我们使用二次判别分析 (QDA) 作为分类算法。如果我们使用全部特征对数据应用 QDA,如下所示,我们将收到错误消息,因为每个组中没有足够的样本来估计协方差矩阵。

    try

    yhat = classify(obs(test(holdoutCVP),:), dataTrain, grpTrain,'quadratic');

    catch ME

    display(ME.message);

    end

    The covariance matrix of each group in TRAINING must be positive definite.

    使用简单的筛选器方法选择特征

    我们的目的是找出一小组能够实现良好分类性能的重要特征,从而减少数据的维度。特征选择算法可以大致分为两类:筛选器方法和封装器方法。筛选器方法依赖于数据的一般特性来评估和选择特征子集,而不涉及所选择的学习算法(此示例中为 QDA)。封装器方法利用所选学习算法的性能来评估每个候选特征子集。封装器方法会搜索更适合所选学习算法的特征,但如果学习算法需要很长时间运行,则封装器方法可能会比筛选器方法慢很多。有关“筛选器”和“封装器”的概念,请参阅以下文献:John G. Kohavi R. (1997) "Wrappers for feature subset selection", Artificial Intelligence, Vol.97, No.1-2, pp.272-324。本示例通过一个筛选器方法实例和一个封装器方法实例进行说明。

    筛选器通常用作预处理步骤,因为它们简单快速。一种广泛用于生物信息学数据的筛选器方法是分别对每个特征应用单变量准则(假设特征之间没有交互作用)。

    例如,我们可以对每个特征应用 t 检验,然后比较每个特征的 p 值(或 t 统计量的绝对值),以衡量该特征的分组效果如何。

    dataTrainG1 = dataTrain(grp2idx(grpTrain)==1,:);

    dataTrainG2 = dataTrain(grp2idx(grpTrain)==2,:);

    [h,p,ci,stat] = ttest2(dataTrainG1,dataTrainG2,'Vartype','unequal');

    为了大致了解每个特征区分两个组的效果,我们可以绘制 p 值的经验累积分布函数 (CDF):

    ecdf(p);

    xlabel('P value');

    ylabel('CDF value')

    42048b57b22710ba0c673032a79fb51f.png

    大约 35% 的特征的 p 值接近零,超过 50% 的特征的 p 值小于 0.05,这意味着 5000 个原始特征中有超过 2500 个特征具有强大的区分能力。您可以根据 p 值(或 t 统计量的绝对值)对这些特征进行排序,然后从排序的列表中选择一些特征。但是,除非您具备一定的专业知识,或者已经基于外部约束提前确定可以考虑的最大特征数,否则通常很难确定需要多少个特征。

    要确定需要多少个特征,一种快速的方法是绘制测试集上的 MCE 对特征数的函数,MCE 是误分类误差,即误分类的观测值数除以观测值总数。由于训练集中只有 160 个观测值,因此应用 QDA 的最大特征数是有限的,否则,每个组中可能没有足够的样本来估计协方差矩阵。实际上,对于本示例中使用的数据,留出法分区和两个组的大小决定应用 QDA 的最大允许特征数约为 70。现在我们计算特征数介于 5 到 70 之间时的 MCE,并绘制 MCE 对特征数的函数。为了合理地估计所选模型的性能,应使用 160 个训练样本拟合 QDA 模型,并根据 56 个测试观测值(下图中的蓝色圆形标记)计算 MCE。为了说明再代入误差为什么不能很好地反映测试误差,我们同时用红色三角形标记显示再代入 MCE。

    [~,featureIdxSortbyP] = sort(p,2); % sort the features

    testMCE = zeros(1,14);

    resubMCE = zeros(1,14);

    nfs = 5:5:70;

    classf = @(xtrain,ytrain,xtest,ytest) ...

    sum(~strcmp(ytest,classify(xtest,xtrain,ytrain,'quadratic')));

    resubCVP = cvpartition(length(grp),'resubstitution')

    resubCVP =

    Resubstitution (no partition of data)

    NumObservations: 216

    NumTestSets: 1

    TrainSize: 216

    TestSize: 216

    for i = 1:14

    fs = featureIdxSortbyP(1:nfs(i));

    testMCE(i) = crossval(classf,obs(:,fs),grp,'partition',holdoutCVP)...

    /holdoutCVP.TestSize;

    resubMCE(i) = crossval(classf,obs(:,fs),grp,'partition',resubCVP)/...

    resubCVP.TestSize;

    end

    plot(nfs, testMCE,'o',nfs,resubMCE,'r^');

    xlabel('Number of Features');

    ylabel('MCE');

    legend({'MCE on the test set' 'Resubstitution MCE'},'location','NW');

    title('Simple Filter Feature Selection Method');

    9dcfe7fd3a9e19f5b595a80d7b5becf1.png

    为方便起见,我们将 classf 定义为匿名函数。它将基于给定的训练集拟合 QDA,并返回基于给定测试集的误分类样本数。如果您开发自己的分类算法,则可能需要将其放在单独的文件中,如下所示:

    % function err = classf(xtrain,ytrain,xtest,ytest)

    % yfit = classify(xtest,xtrain,ytrain,'quadratic');

    % err = sum(~strcmp(ytest,yfit));

    再代入 MCE 过于乐观。它随着所用特征数的增加而持续减少;当特征数超过 60 时,它会减少到零。但是,如果测试误差升高而再代入误差继续下降,则可能发生过拟合。当使用 15 个特征时,这种简单的筛选器特征选择方法获得了针对测试集的最小 MCE。该图显示,当使用的特征数等于或大于 20 时,将开始发生过拟合。针对测试集的最小 MCE 为 12.5%:

    testMCE(3)

    ans = 0.1250

    下面是实现最小 MCE 的前 15 个特征:

    featureIdxSortbyP(1:15)

    ans = 1×15

    2814 2813 2721 2720 2452 2645 2644 2642 2650 2643 2731 2638 2730 2637 2398

    应用序列特征选择

    上述特征选择算法不考虑特征之间的交互作用;此外,基于各个特征的排位从列表中选择的特征也可能包含冗余信息,因此并不需要全部特征。例如,选择的第一个特征(2814 列)和第二个特征(2813 列)之间的线性相关系数几乎为 0.95。

    corr(dataTrain(:,featureIdxSortbyP(1)),dataTrain(:,featureIdxSortbyP(2)))

    ans = single

    0.9447

    这种简单的特征选择过程速度很快,因而通常用作预处理步骤。更高级的特征选择算法则用于提高性能。序列特征选择是使用最广泛的方法之一。它通过按顺序添加特征(前向搜索)或删除特征(后向搜索)来选择特征子集,直到满足某些停止条件为止。

    在此示例中,我们以封装器方法使用前向序列特征选择来查找重要特征。具体而言,由于分类的目的通常是为了使 MCE 最小化,因此特征选择过程使用每个候选特征子集的学习算法 QDA 的 MCE,将其作为该子集的性能指标来执行序列搜索。训练集用于选择特征并拟合 QDA 模型,测试集用于评估最终选择的特征的性能。在特征选择过程中,为了评估和比较每个候选特征子集的性能,我们对训练集应用分层 10 折交叉验证。稍后将说明为什么要对训练集应用交叉验证。

    首先,我们为训练集生成一个分层 10 折分区:

    tenfoldCVP = cvpartition(grpTrain,'kfold',10)

    tenfoldCVP =

    K-fold cross validation partition

    NumObservations: 160

    NumTestSets: 10

    TrainSize: 144 144 144 144 144 144 144 144 144 144

    TestSize: 16 16 16 16 16 16 16 16 16 16

    然后,我们将上一节中的筛选作为预处理步骤,使用其结果来选择特征。例如,我们在此选择 150 个特征:

    fs1 = featureIdxSortbyP(1:150);

    对这 150 个特征应用前向序列特征选择。函数 sequentialfs 提供一种简单的方法(默认选项)来决定需要多少个特征。它在找到交叉验证 MCE 的第一个局部最小值时停止。

    fsLocal = sequentialfs(classf,dataTrain(:,fs1),grpTrain,'cv',tenfoldCVP);

    所选特征如下:

    fs1(fsLocal)

    ans = 1×3

    2337 864 3288

    为了评估具有这三个特征的所选模型的性能,我们基于 56 个测试样本计算 MCE。

    testMCELocal = crossval(classf,obs(:,fs1(fsLocal)),grp,'partition',...

    holdoutCVP)/holdoutCVP.TestSize

    testMCELocal = 0.0714

    因为只选择了三个特征,此 MCE 仅比使用简单筛选器特征选择方法的最小 MCE 的一半大一点。

    算法可能过早停止。有时,通过在合理的特征数量范围内寻找交叉验证 MCE 的最小值,可以实现更小的 MCE。例如,我们绘制交叉验证 MCE 对特征数(最多 50 个)的函数。

    [fsCVfor50,historyCV] = sequentialfs(classf,dataTrain(:,fs1),grpTrain,...

    'cv',tenfoldCVP,'Nf',50);

    plot(historyCV.Crit,'o');

    xlabel('Number of Features');

    ylabel('CV MCE');

    title('Forward Sequential Feature Selection with cross-validation');

    b1db2af5c11b074be87759100086b171.png

    当使用 10 个特征时,交叉验证 MCE 达到最小值,并且这条曲线在 10 到 35 个特征范围内保持平直。而且,当使用的特征超过 35 个时,曲线上升,意味着发生过拟合。

    通常最好使用较少的特征,因此我们选择 10 个特征:

    fsCVfor10 = fs1(historyCV.In(10,:))

    fsCVfor10 = 1×10

    2814 2721 2720 2452 2650 2731 2337 2658 864 3288

    要按照序列前向过程中选择特征的顺序显示这 10 个特征,我们在 historyCV 输出中找到它们首次变为 true 的行:

    [orderlist,ignore] = find( [historyCV.In(1,:); diff(historyCV.In(1:10,:) )]' );

    fs1(orderlist)

    ans = 1×10

    2337 864 3288 2721 2814 2658 2452 2731 2650 2720

    为了评估这 10 个特征,我们基于测试集计算这些特征的 QDA 的 MCE。我们获得到目前为止最小的 MCE 值:

    testMCECVfor10 = crossval(classf,obs(:,fsCVfor10),grp,'partition',...

    holdoutCVP)/holdoutCVP.TestSize

    testMCECVfor10 = 0.0357

    我们不妨绘制训练集上的再代入 MCE 值(即,在特征选择过程中不执行交叉验证)对特征数的函数:

    [fsResubfor50,historyResub] = sequentialfs(classf,dataTrain(:,fs1),...

    grpTrain,'cv','resubstitution','Nf',50);

    plot(1:50, historyCV.Crit,'bo',1:50, historyResub.Crit,'r^');

    xlabel('Number of Features');

    ylabel('MCE');

    legend({'10-fold CV MCE' 'Resubstitution MCE'},'location','NE');

    b58579826c1497ad3c1248593c7b23d2.png

    这里的再代入 MCE 值同样过于乐观。其中大多数都小于交叉验证 MCE 值,且使用 16 个特征时,再代入 MCE 值开始变为零。我们可以计算这 16 个特征针对测试集的 MCE 值,以查看它们的真实性能:

    fsResubfor16 = fs1(historyResub.In(16,:));

    testMCEResubfor16 = crossval(classf,obs(:,fsResubfor16),grp,'partition',...

    holdoutCVP)/holdoutCVP.TestSize

    testMCEResubfor16 = 0.0714

    这 16 个特征(在特征选择过程中通过再代入选出)针对测试集的性能 testMCEResubfor16 大约是 10 个特征(在特征选择过程中通过 10 折交叉验证选出)针对测试集的性能 testMCECVfor10 的两倍。这再次表明,在评估和选择特征时,再代入误差往往并不能很好地反映性能。不管是在最终评估期间,还是在特征选择过程中,我们都要避免使用再代入误差。

    展开全文
  • 对如此高维数据进行索引执行搜索操作不是很有效,许多信息检索、数据挖掘、机器学习算法在高维数据上表现不佳。 因此,需要降维技术来找出数据的固有维度并减少不太重要的维度。 局部敏感哈希(LSH)技术用于...
  • java中一维数组和高维素组的输出 数组的输出 Object类定义了toString方法,输出的是输出对象的类名散列码。 而数组继承的是object类的toString方法,因此直接输出数组不能得到里面的值 解决方案 使用静态方法...
  • 高维前缀总结

    千次阅读 2019-10-09 00:29:31
    高维前缀一般解决这类问题: 对于所有的\(i,0\leq i\leq 2^n-1\),求解\(\sum_{j\subset i}a_j\)。 显然,这类问题可以直接枚举子集求解,但复杂度为\(O(3^n)\)。如果我们施展高维前缀的话,复杂度可以到\(O(n...
  • BOOTSTAT = bootstrpXD(dim,NBOOT,BOOTFUN,D1,...) 是否使用 X 维输入进行引导概述使用 dim=[],bootstrpXD 的操作与熟悉的 Matlab 完全相同bootstrp 函数,除了矩阵 D1,... 可以大于二维。 为dim 分配一个标量值...
  • 这组 3 个文件旨在有效地将矩阵乘法扩展到更高维的数组。 它还可以用于计算两个数组的外积,并在数组的任意两个维度上执行跟踪。 在计算两个数组的矩阵乘积时,首先取外积,然后在适当的二维上跟踪结果数组。 在我...
  • 本文已搬家至【OpenCV学习】一个多维数组(矩阵)一个一维,但是包含高维数据的数组之间的区别
  • 如果我理解正确,你只需将#cube的高度设置为200px#container {perspective: 1000px;perspective-origin: 0 0;}#cube {position: relative;top: 100px;left: 100px;width: 200px;height:200px;transform-style: ...
  • 知识点 - 高维前缀

    2019-09-03 10:45:44
    知识点 - 高维前缀 解决问题类型: 求解多维数组的前缀,或者是求一个集合中所有有效子集的累加。 前置知识 前缀 一维前缀: for(int i=1;i<=n;i++) b[i]=b[i-1]+a[i]; 二维前缀: for(int i=1;i&...
  • pts = {{0.`, -1.`, 0.`}, {-0.2411`, -0.94`, 0.2412`}, {-0.3831`, -0.842`, 0.3798`}, {-0.4355`, -0.715`, 0.547`}, {-0.5892`, -0.5859`, 0.5564`}} ...Graphics3D[{Red, PointSize[0.03], Poi...
  • Tensor库为Elixir添加了对Vectors,Matrixs高维Tensors的支持。 这些数据结构使事物的多维集合的创建操作更加容易。 人们可以将它们用于数学运算,也可以用于构建棋盘游戏表示形式。 Tensor库以稀疏方式构建...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,326
精华内容 5,330
关键字:

多维和高维