当前位置:网站首页>Numpy's research imitation 1
Numpy's research imitation 1
2022-06-29 21:43:00 【InfoQ】
struct _u_array {
char *start[2];
int axis_n;
};static size_t
__xd_coord_to_1d_offset(size_t coord[], size_t axes[], int axis_n) {
size_t offset = 0, axis_mulitply;
for (int i=0; i<axis_n; ++i) {
size_t co = coord[i];
axis_mulitply = __axis_mulitply(axes, axis_n, i+1);
offset += co * axis_mulitply;
}
return offset;
}static void
__1d_offset_to_xd_coord( size_t offset, size_t axes[], int axis_n, size_t coord[])
{
size_t div, mod, i, axis_mulitply, middle_value;
middle_value = offset;
for(i=0; i<axis_n-1; ++i) {
axis_mulitply = __axis_mulitply(axes, axis_n, i+1);
div = middle_value / axis_mulitply;
mod = middle_value % axis_mulitply;
coord[i] = div;
middle_value = mod;
}
coord[i] = mod;
return;
}- initialization
/**
* Enter dimension quantity , for example 3 dimension
* Enter each dimension , for example [3, 3, 3]
*/
u_array_t UArray_create(int axis_n, size_t shape[])
{
if (axis_n >= 0) {
u_array_t n_array;
n_array.axis_n = axis_n;
start[0] = __alloc_shape(axis_n, shape);
start[1] = __alloc_data(__axis_mulitply(shape, axis_n, 0));
return n_array;
}
return ua_unable;
}- Load data
u_array_t* UArray_load(u_array_t* arr, vfloat_t data[])
{
size_t size_arr = UA_size(arr);
vfloat_t* ptr = UA_data_ptr(arr);
memcpy(ptr, data, size_arr);
return arr;
}- Access data
float UArray_get(u_array_t* arr, ...)
{
va_list valist;
va_start(valist, arr);
size_t coord[UA_axisn(arr)];
for (int i=0; i<UA_axisn(arr); ++i) {
coord[i] = va_arg(valist, size_t);
}
va_end(valist);
size_t offset = UA_cover_coordinate(arr, coord);
return ((float*)(UA_data_ptr(arr)))[offset];
}
void UArray_set(u_array_t* arr, ...)
{
va_list valist;
va_start(valist, arr);
size_t coord[UA_axisn(arr)];
vfloat_t value;
for (int i=0; i<UA_axisn(arr); ++i) {
coord[i] = va_arg(valist, size_t);
}
value = va_arg(valist, double);
va_end(valist);
size_t offset = UA_cover_coordinate(arr, coord);
((float*)(UA_data_ptr(arr)))[offset] = value;
return;
}int main()
{
// Define a 3 Dimensional ultra_array
u_array_t arr3 = UArray3d(2, 3, 4);
// Fill from 0 To 23 The number of .
UA_arange(&arr3, 2*3*4);
// obtain
float v = UA_get(&arr3, 1, 2, 3);
// v == 23
UA_set(&arr3, 1, 2, 3, 5.5);
v = UA_get(&arr3, 1, 2, 3);
// v == 5.5
return 0;
}边栏推荐
- leetcode:370. 区间加法
- 【ROS进阶篇】第二讲 自定义头、源文件封装
- 不同系统下的文件层级符号小结
- C. Most Similar Words
- PostgreSQL每周新聞—6月22日
- The explain function of the DALEX package of R language generates a machine learning model interpreter and predict for the specified classification prediction_ The parts function analyzes the contribu
- Vipshop product details API interface (item_get- get vipshop product details interface), vipshop details API interface
- leetcode:307. 区域和检索 - 数组可修改
- Alibaba product details API interface (item_get- get product details interface), Alibaba API interface
- BUAA OO unit 4 HW16 unit 4 Summary and course review
猜你喜欢

Practical guide to GStreamer application development (V)

Analysis of the factors affecting the transmission signal of the conductive slip ring

透过华为军团看科技之变(五):智慧园区

每周招聘|DBA数据工程师,年薪35+ ,梦起九州,星河灿烂!

Desai wisdom number - other charts (basic sunrise chart): high frequency words in graduation speech

Reinforcement learning weekly (issue 51): integration of PAC, ilql, RRL & model free reinforcement learning into micro grid control: overview and Enlightenment

Small library project summary

American tunneling ASTM E84 surface flame retardant test

leetcode:307. 区域和检索 - 数组可修改

Summary of document level symbols under different systems
随机推荐
Cloud native database query optimization - statistics and row count estimation
小型图书馆项目总结
Alibaba keyword search commodity API interface (item_search- commodity search interface by keyword), Alibaba Search API interface
A. Beat The Odds
实现inotify配合rsync实时备份
推荐书籍--白夜行
A new Polaris has risen!
leetcode:370. 区间加法
[advanced ROS chapter] Lecture 4: duplicate names in ROS (nodes, topics and parameters)
直播预告 | PostgreSQL 内核解读系列第一讲:PostgreSQL 系统概述
Visual analysis and display effect of summer data
LeetCode 1. 两数之和
Viewing technological changes through Huawei Corps (V): smart Park
leetcode:307. Area and retrieval - array modifiable
Aleph farms hired a supervisor of regulatory affairs to prepare for global commercialization in advance
Common methods of string class
阿里巴巴商品详情API接口(item_get-获得商品详情接口),阿里巴巴API接口
[crossbeam series] 5 crossbeam util and crossbeam queue: some practical gadgets
Simple application and configuration of Rsync
Rsync 的简单应用与配置