Numpy笔记

ps:本内容为博主个人笔记,内容为自己所理解,不一定正确。

1、需要数组的运算,通常不用列表,用numpy。

2、列表中可以放不同类型数据,numpy中必须放相同类型数据。

3、使用numpy创建数组

import numpy as np
a = [1,2,3,4,5]		#用列表创建数组a
b = (1,2,3,4,5)		#用元组创建数组b
A = np.array(a)		#转成numpy数组
B = np.array(b)		#转成numpy数组
print(A)			#[1 2 3 4 5]
print(B)			#[1 2 3 4 5]
print(type(A))      #
print(type(B))      #

4、dtype

import numpy as np
a = [1,2,3,4,5]					#用列表创建数组a
A = np.array(a,dtype=int)		#转成numpy数组,数组内的数据转成int型
B = np.array(a,dtype=float)		#转成numpy数组,数组内的数据转成float型
Zero=np.zeros((2,3),dtype=int)	#2*3的零矩阵
One=np.ones((2,3),dtype=int)	#2*3的一矩阵

5、存储和读写数组

import numpy as np
a = [[1,2,3],[4,5,6]]		#用列表创建数组a
A = np.array(a)

#存
np.save('a.npy',A)			#存储成.npy,数据类型不变
np.savetxt('a.txt',A)		#存储成.txt,数据类型会变成float
np.savetxt('a.csv',A)		#存储成.csv,数据类型会变成float

#读
B = np.load('a.npy')
C = np.loadtxt('a.txt')
D = np.genfromtxt('a.csv')

#打印看效果
print(A)
print(B)
print(C)
print(D)

上面代码的结果

[[1 2 3]
 [4 5 6]]
[[1 2 3]
 [4 5 6]]
[[1. 2. 3.]
 [4. 5. 6.]]
[[1. 2. 3.]
 [4. 5. 6.]]

可以看到.npy与原数组的数据类型是一样的int,.txt和.csv的类型变成float。所以存数组尽量用.npy

6、索引

import numpy as np
a = [[1,2,3],[4,5,6]]		#用列表创建数组a
A = np.array(a)
print(A[0,1])				#索引,输出A的第1行第2个元素,即2。
#print(A[0][1])				#同上

7、切片
切片格式数组名[开始下标:结束下标:步长] #两个下标左闭右开

import numpy as np
B=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
B=np.array(B)
C=B[0:2,1:3]
print(C)		#C=[[2 3] [5 6]]

步长缺省默认为1;
开始下标缺省默认为0;
结束下标缺省默认为到结束;
所以opencv中对于bgr图像,img[:,:,0],img[:,:,1],img[:,:,2]分别表示整幅图像所有像素的b、g、r通道。

8、重塑

import numpy as np
B=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
B=np.array(B)
D=np.reshape(B,(2,6))		#把4*3数组重塑成2*6数组
print(D)

9、乘法

import numpy as np

a=[[1,1],[1,1]]
b=[[2,2],[2,2]]
a=np.array(a)
b=np.array(b)
c=np.dot(a,b)			#矩阵的乘积
d=a*b					#矩阵对应位置元素相乘
print(c)
print(d)

你可能感兴趣的:(numpy,python)