学校 理解成一个三维数组
[年级][班级][学号] = 某个人
[二年级][三班][16号]=杰伦
一般来说,多维数组不推荐使用
因为:一是难以理解,二是不太直观,三是执行效率和一维数组比较显得缓慢
建议使用面对对象的思维简化多维数组
class Student{String grade;//年级
String classes;//班级
int num;//学号
public Student(String grade, String classes, int num) {
thisgrade = grade;
thisclasses = classes;
thisnum = num;
}
}
2是指数组元素个数。
$a = array (
array(
"pid" => "4","number" => "1"
),
array(
"pid" => "5","number" => "1"
)
);
// 遍历多维数组
foreach($a as $b){
foreach($b as $key_pid => $value_number){
echo $key_pid;
echo $value_number;
}
}
npmgrid 是 numpy 中的一个函数,它可以创建多维网格坐标数组。使用格式为 npmgrid[start:end:step],其中 start 和 end 指定坐标范围,step 指定步长。
在这个例子中,bb=npmgrid[-5:5:5j] 用来创建一个1维数组,坐标范围从 -5 到 5,步长为 5。其中,j是在数学意义下的虚数单位,它是numpy支持的虚数类型,主要用于表示复数类型。因此 5j 是表示以 5i 为步长的虚数坐标。
如果你想使用变量来设置坐标范围和步长,可以在变量名后加上 j 来表示虚数单位,例如:
k = 5
bb = npmgrid[-k:k:k1j]
注意在这里你需要把 k1j 而不是 kj 作为步长
同时如果你想要得到一个多维数组,可以在不同轴上都指定这种形式的参数,并将它们放在一个列表或者元组中作为 mgrid 函数的参数。
假设你一维数组的大小为100
你需要把它拆分为205的一个二维矩阵。
不妨这样去实现:
假设一维数组的下标为x,可以把它在逻辑上转换为二维数组的下标:
m
=
x
/
5
n
=
x
%
5
比如你要找第一行第二列的元素,那在一维数组中就是a[1]
转化为二维坐标就是b[0][1]。
其实多维数组和一维数组一样,在计算机中都是用的一段连续的内存。只是他们的表现形式不一样。
另外,c里边没有动态的二维数组,第二维的大小必须指定的。
问题补充:转换成二维数组以后怎么才能用更简单的方式a[m][n]去表达呢?如果用那个表达式的话就太麻烦了,我要进行大量的 *** 作,容易出问题。
打不出来中文直接打英文也行,我能看懂的,呵呵,谢谢啦
答:这个可以用宏来实现。举个例子说,比如你定义一个大小为100的一维数组a,然后你需要别人输入m=8,n=9(很多情况别人不可能按照你的意图来刚好用m和n整除一维数组的下表最大值,也就是说那个一维数组只需要保证足够大就可以了),然后你希望得到一个89的二维矩阵b[8][9]。
引用这个二维矩阵的时候,直接使用b[3][4]来引用第三行第四列的元素?
用宏定义(以下宏定义并没有上机调试,只是提供思路)
#define
b[(x)][(y)]
a[((xm)+(y%n)]
解释一下:xm,加入你需要b[3][4],那么就是对应一维数组第38+4%9=28个元素。
首先,纠正题目中的一个错误:
m行n列的二维数组,arr[0,0]意味着行、列下标的开始均为0,那么行值应该是0m-1,列值应该是0n-1。故arr[i,j]后的(i<=m&&j<=n)是错误的,只能是(i<m&&j<n)。
a[i,j]表示i行j列的元素。按行优先存储的话,a[i,j]之前的i (0i-1)行全满,故有in个元素。在i行里,排在a[i,j]之前有j (0j-1)个元素。两者相加,a[i,j]是在a[0,0]之后的(in+j)个元素。
以上就是关于关于java三维数组全部的内容,包括:关于java三维数组、php处理多维数组怎么获取里面值、python numpy 的 mgrid 使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)