提到数组,大家都不陌生,什么是数组行列转置呢?其实也很简单,如下图所示,行列转置就是将数组元素的存放方式进行转换,原来保存在第一列的数据,将保持在新数组的第一行,并且保持原有顺序,即6在第一个位置,8在最后一个位置。其他列依次类推。
在Excel工作表中有个强大的函数Transpose,可以直接实现数组行列转置,作为VBA开发者来说,肯定不会忘记用这个。
Sub Demo1() Dim aData(1 To 3, 1 To 2) For i = 1 To 3 For j = 1 To 2 aData(i, j) = i + j * 5 Next j Next i aTrans = Application.Transpose(aData) Debug.Print UBound(aData, 1) & " x "; UBound(aData, 2) Debug.Print "=>>" Debug.Print UBound(aTrans, 1) & " x "; UBound(aTrans, 2) End Sub
一句代码轻松实现转置,比很多程序开发语言都要简单,在本地窗口中可以看到转置效果。
这么好用的神奇代码,有时会莫名其妙的罢工,我们来看看下面的代码,运行代码将给出“类型不匹配”的错误提示,错误号为“13”。
Sub Demo2() Dim aData(1 To 3, 1 To 2) For i = 1 To 3 For j = 1 To 2 aData(i, j) = i + j * 5 Next j Next i aData(1, 1) = Application.Rept("$", 256) aTrans = Application.Transpose(aData) ' Runtime error "13" Debug.Print UBound(aData, 1) & " x "; UBound(aData, 2) Debug.Print "=>>" Debug.Print UBound(aTrans, 1) & " x "; UBound(aTrans, 2) End Sub
转置失败的原因在于aData(1,1)的字符长度为256,Transpose所能够处理的数组元素字符长度最大为255。有时就是需要处理这样的数组元素,那么我们可以使用自定义函数进行数组的行列转置。TrasnposeArray可以实现二维数组的行列转置。其效果与Transpose函数相同。
Sub Demo3() Dim aData(1 To 3, 1 To 2) For i = 1 To 3 For j = 1 To 2 aData(i, j) = i + j * 5 Next j Next i aData(1, 1) = Application.Rept("$", 256) aTrans = TransposeArray(aData) Debug.Print UBound(aData, 1) & " x "; UBound(aData, 2) Debug.Print "=>>" Debug.Print UBound(aTrans, 1) & " x "; UBound(aTrans, 2) End Sub Function TransposeArray(arrA) As Variant Dim aRes() If VBA.IsArray(arrA) Then ReDim aRes(LBound(arrA, 2) To UBound(arrA, 2), LBound(arrA, 1) To UBound(arrA, 1)) For i = LBound(arrA, 1) To UBound(arrA, 1) For j = LBound(arrA, 2) To UBound(arrA, 2) aRes(j, i) = arrA(i, j) Next Next TransposeArray = aRes End If End Function
补充说明一点,由于Transpose本身是工作表函数,因此大家使用时,需要注意它的另一个限制,就是被转置数组的最大行数是65,536。
以上这篇Transpose 数组行列转置的限制方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
本文向大家介绍Tensorflow:转置函数 transpose的使用详解,包括了Tensorflow:转置函数 transpose的使用详解的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说,咱直接看代码吧! tf.transpose Defined in tensorflow/python/ops/array_ops.py. See the guides: Math > Matrix M
转置操作以矩阵形式切换行和列。 它由单引号(')表示。 例子 (Example) 使用以下代码创建脚本文件 - a = [ 10 12 23 ; 14 8 6; 27 8 9] b = a' 运行该文件时,它显示以下结果 - a = 10 12 23 14 8 6 27 8 9 b = 10 14
转置操作将列向量更改为行向量,反之亦然。 转置操作由单引号(')表示。 例子 (Example) 使用以下代码创建脚本文件 - r = [ 1 2 3 4 ]; tr = r'; v = [1;2;3;4]; tv = v'; disp(tr); disp(tv); 运行该文件时,它显示以下结果 - 1 2 3 4 1 2 3 4
我已经搜索了ArrayList容量问题,但没有找到完整的答案。所以在这里再问一次。 我知道,我们在ArrayList中添加的元素数量和容量的大小是我们可以在默认值为10的列表中放入多少数据。 所以这里的问题是,在宣布是否有这样的能力时 然后我还可以继续将元素增加到10或20。那么,这个容量声明仅对达到容量时发生的内部重新分配有用吗? 或者,通过给出容量限制,我们可以只限制到添加元素的那一点吗?
我真的很困惑为什么我的Java代码不起作用,它给了黑客地球上的代码僧侣TLE。这里是指向1的链接 链接质疑第一个问题和尚和旋转 我不知道为什么它给了TLE我想这是一个无限循环。 现场的问题是- 蒙克和旋转蒙克喜欢对数组执行不同的操作,所以作为哈克地球学校的校长,他给他的新学生米什基布置了一个任务。Mishki将被提供一个大小为N的整数数组A和一个整数K,在这里她需要将数组向正确的方向旋转K步,然后
本文向大家介绍Numpy中转置transpose、T和swapaxes的实例讲解,包括了Numpy中转置transpose、T和swapaxes的实例讲解的使用技巧和注意事项,需要的朋友参考一下 利用Python进行数据分析时,Numpy是最常用的库,经常用来对数组、矩阵等进行转置等,有时候用来做数据的存储。 在numpy中,转置transpose和轴对换是很基本的操作,下面分别详细讲述一下,以免