python中一维数组和二维数组,python3二维数组
最近在使用cuda的时候遇到了一个问题。在编写内核函数时,我总是使用数组。在项目中,需求被传递到二维数组中。在网上搜了半天,还是要自我测试一下才能达到目的。经过无脑测试,终于搞定了。测试代码如下:
Numpy.array ([[2,1,3],[4,5,6]])。astype(numpy . float 32)numpy . array([2,1,3])。astype (numpy.float32)上面的cuda使用numpy创建二维数组和一维数组,并设置数据类型
mod=source module( _ _ global _ _ void multiply _ them(float * b){ const int I=threadidx . x;printf( - %f\\n ,*(B1 * 3 0));} )上面的代码应该不需要解释,主要是注意这个内核函数的参数。这里收到的参数类型是float *b,这里正确使用了指针类型。有人会问在C/C中,函数参数使用二维数组时,应该使用:float **b来获取参数值。如果你这么认为,恭喜你。你将一辈子生活在烦恼中。
这里虽然python传入的参数是一个二维数组,但是在传入内核函数后,我们要把这个二维数组参数看成C/C中的一维数组,在传入内核函数后,参数的形式可以看做如下,用于数据取值:
float *b [2,1,3,4,5,6]中的数据表单上面的表单我想大家都知道怎么去赋值吧:
print(b: %f ,* b);//打印第一个值2或者下面的表单print(b: %f ,b[0]);此时,我们应该知道如何获取值。剩下的问题是,如果我们像二维数组一样得到对应的值呢?其实很简单:
//正常值形式b[i][j]//此处可以使用此形式获得上面对应的值float ss=*(b I * len j);//b是数组,其中I代表行,J代表列,len代表列的长度,这是我的测试结果。如果您有任何问题,请随时发表评论。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。