我对 numpy 真的很陌生,目前对重塑中的负值感到困惑。
将 numpy 导入为 np
a=np.arange(6)
c=a.reshape(1,3,2)
d=a.reshape(-1,3,2)
e=a.reshape(-1,1,2)
print c
print
print d
print
print e
Run Code Online (Sandbox Code Playgroud)
它返回
[[[0 1]
[2 3]
[4 5]]]
[[[0 1]
[2 3]
[4 5]]]
[[[0 1]]
[[2 3]]
[[4 5]]]
Run Code Online (Sandbox Code Playgroud)
这里的问题是,当比较 c 和 d 时,根本没有区别。然而,在 e 中,每行之间形成了额外的空行。那么,-1 在 reshape 函数中究竟做了什么,为什么它会导致 e 中的每一行之间出现空行?谢谢 !
我想知道为什么cmp指令需要一定的参数顺序条件。
例如,我已经尝试了这两种方法。
cmpl %eax, $'A'cmpl $'A', %eax第一行返回错误,表示操作数类型不匹配。第二行工作得很好。
我浏览了 Intel IA-32 手册,但它无法回答我的问题。它只是说参数 1 和参数 2 之间的减法,而不是每个参数应该具有的类型。
我想知道为什么第一行代码返回的操作数类型不匹配,而第二行却没有。
链接目标文件时,我得到了对“ esp”的未定义引用。
我在名为mydc.s的文件中编写了汇编代码
然后我使用创建了目标文件
as --32 -march=i386 mydc.s -o mydc.o
(这里没有错误)然后将其与
gcc -m32 -march=i386 mydc.o -o mydc
然后它创建错误消息为
(.text + 0x2a):对'esp'的未定义引用
代码如下
.section ".text"
.globl main
.type main,@function
main:
pushl %ebp
movl %esp, %ebp
input:
pushl $buffer
pushl $scanfFormat
call scanf
addl $8, %esp
## check if user input EOF
cmp $EOF, %eax
je quit
pushl $buffer
call isdigit
addl $4, esp
cmp $1, %eax
je if_digit
movl buffer, %eax
cmpl $'p', %eax
je if_p
cmpl $'q', %eax
je if_q …Run Code Online (Sandbox Code Playgroud)