Python和Matlab的差异
Contents
Python和Matlab的差异#
这里列举了一些Python和Matlab的差异。Python在执行方式上接近于matlab,然而在Tensor的索引方式上会和C++一样。
控制语句#
for i in range(10):
if i%2==0:
print(f"even:{i}")
else:
print(f"odd:{i}")
even:0
odd:1
even:2
odd:3
even:4
odd:5
even:6
odd:7
even:8
odd:9
定义函数#
def fib(n):
if n==1 or n==2:
return 1
return fib(n-1)+fib(n-2)
for i in range(1,10):
print(fib(i))
1
1
2
3
5
8
13
21
34
张量运算#
创建张量#
import numpy as np
N=3*4*5
a=np.ones((N,N))
b=np.arange(0,N)
形状#
print("vector B:\n",b)
B=b.reshape((3,4,5))
print("tensor B:\n",B)
vector B:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55 56 57 58 59]
tensor B:
[[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
[[20 21 22 23 24]
[25 26 27 28 29]
[30 31 32 33 34]
[35 36 37 38 39]]
[[40 41 42 43 44]
[45 46 47 48 49]
[50 51 52 53 54]
[55 56 57 58 59]]]
索引#
print(B[0,1,2])
print(B[0][1][2])
7
7
切片#
B[0:2,:,:]
B[[0,2],:,:]
B[...,0:1]
B[None,...]
s=slice(0,2,1)
B[s,s,s]
array([[[ 0, 1],
[ 5, 6]],
[[20, 21],
[25, 26]]])
张量合并#
A1=np.ones((3,5))
A2=np.ones((3,5))
AA=np.concatenate([A1,A2],axis=0)
print(AA.shape)
AA2=np.concatenate([A1,A2],axis=1)
print(AA2.shape)
AA3=np.stack([A1,A2],axis=1)
print(AA3.shape)
(6, 5)
(3, 10)
(3, 2, 5)
读取与保存#
### 打开文件
f=open("a.txt",'w')
f.close()
### 保存数组,读取数组
np.savez("A1.npz",A1=A1,A2=A2)
A1=np.load("A1.npz")["A1"]
Lambda 函数#
add=lambda x,y:x+y
add(3,4)
7