小编moj*_*ntu的帖子

Python - 将数组列表转换为2D数组

我有一个格式如下的数据集:

A=[(Num1,Num2,Num3), (Num4,Num5,Num6), (Num7,Num8,Num9)]
Run Code Online (Sandbox Code Playgroud)

同

A.shape = (3,)
Run Code Online (Sandbox Code Playgroud)

我想将其转换为2D numpy数组:

A=[[Num1,Num2,Num3],[Num4,Num5,Num6],[Num7,Num8,Num9]]
Run Code Online (Sandbox Code Playgroud)

同

A.shape = (3,3)
Run Code Online (Sandbox Code Playgroud)

我该怎么做,最好没有循环?谢谢.

python arrays numpy

10
推荐指数
3
解决办法
3万
查看次数

为什么明确的interrput标志导致C中的分段错误?

我正在学习关于Assembly和C.的一些基础知识用于学习目的我决定编写一个禁用Interrupts的简单程序,当用户想要在控制台中键入内容时他/她不能:

#include <stdio.h>
int main(){
    int a;
    printf("enter your number : ");
    asm ("cli");
    scanf("%d", &a);
    printf("your number is %d\n" , a);     
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是当我用GCC编译它时,我得到了分段错误:

Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

当我调试它gdb时,当程序到达该asm("cli");行时我得到了这条消息:

Program received signal SIGSEGV, Segmentation fault.
main () at cli.c:6
6       asm ("cli");
Run Code Online (Sandbox Code Playgroud)

c x86 assembly interrupt

6
推荐指数
1
解决办法
887
查看次数

我不明白这个扩展程序集内联代码在C中

这是一个使用扩展汇编代码的C函数:

static inline uint
xchg(volatile uint *addr, uint newval)
{
    uint result;
    asm volatile("lock; xchgl %0, %1" :
                "+m" (*addr), "=a" (result) :
                "1" (newval) :
                "cc");
    return result;
}
Run Code Online (Sandbox Code Playgroud)

我读了这个codeproject链接,了解如何在C代码中使用Extended Assembly,但我对此代码感到困惑.我不明白这段代码中的内容:
1)(newval)汇编代码中哪里用作输入?(%0是指(*addr)与%1被参考(result)吧?然后"1" (newval)从来没有在代码中使用(我们从来没有看到%2在代码).或者我错了?)
2)什么是"1"在"1" (newval)输入操作数?
3)什么是"+m"标志意味着"+m" (*addr)什么?

c assembly inline-assembly

5
推荐指数
1
解决办法
477
查看次数

标签 统计

assembly ×2

c ×2

arrays ×1

inline-assembly ×1

interrupt ×1

numpy ×1

python ×1

x86 ×1