In [1]:
import numpy as np
创建一个数组¶
In [2]:
arry1 = np.array([[1,2,3]
,[4,5,6]])
In [3]:
farry1
Out[3]:
查看数组的一些属性(维数等)¶
In [4]:
print('the dimension of arry is',arry1.ndim)
In [5]:
print('the shape of arry is',arry1.shape)#显示(行数,列数)
In [6]:
print('the size of arry is',arry1.size) #显示有几个元素
定义array的type¶
In [7]:
arry2 = np.array([1,2,3],dtype=np.int64)#定义为整型
print(arry2.dtype)
生成0矩阵¶
In [8]:
arryzero = np.zeros((3,4))#3行4列
arryzero
Out[8]:
生成1矩阵¶
In [9]:
arrayone = np.ones((3,6))
arrayone
Out[9]:
In [10]:
print('the default dtype of arryone is',arrayone.dtype)
生成空矩阵¶
In [11]:
arrayempty = np.empty((3,6))
arrayempty
Out[11]:
生成有序数组¶
In [12]:
arrayarrange = np.arange(10,20,2)
In [13]:
arrayarrange
Out[13]:
In [14]:
arrayarrange2 = np.arange(12).reshape(3,4)#重新定义其形状
arrayarrange2
Out[14]:
生成一个线段¶
In [15]:
lines = np.linspace(0,9,10)#在0~9之间生成10段,包含终值
lines
Out[15]:
In [16]:
lines.reshape((2,5))
Out[16]:
numpy的基础运算¶
设置¶
In [17]:
a = np.arange(10,50,10)
b = np.arange(4)
a,b
Out[17]:
In [18]:
c = a-b
c
Out[18]:
In [19]:
c = a+b
c
Out[19]:
In [20]:
c = b**2
c#每个元素都平方
Out[20]:
三角函数的运算¶
In [21]:
c = 10*np.sin(a)#a中每一个值都代入sin中再*10
c
Out[21]:
矩阵中的布尔运算¶
In [22]:
print(b<3) #生成布尔列表,看哪个数小于3
乘法运算¶
In [23]:
d = np.array([[10,10]
,[10,10]])
e = np.arange(4).reshape(2,2)
d,e
Out[23]:
In [24]:
f = d*e#逐个相乘
f
Out[24]:
In [25]:
f = np.dot(d,e)#等同于d.dot(e)
f
Out[25]:
随机矩阵¶
In [26]:
g = np.random.random((3,2))#生成一个随机的数列,()里面为一个shape
g
Out[26]:
一些内置函数¶
数组求和(里面所有数加起来)¶
In [27]:
g = np.sum(f)
g
Out[27]:
In [28]:
g = np.sum(f,axis=0)#每一列加起来 axis=1为每一行加起来的值
g
Out[28]:
最大值和最小值¶
In [29]:
np.max(f),np.min(f)
Out[29]:
In [30]:
np.max(f,axis=0)#每一行的最大值
Out[30]:
In [77]:
np.max(f,axis=1)#每一列的最大值
Out[77]:
索引¶
一维¶
In [31]:
A = np.arange(3,15)
A
Out[31]:
In [32]:
A[3]
Out[32]:
二维¶
In [33]:
A = np.arange(3,15).reshape(3,4)
A
Out[33]:
In [34]:
A[2]#第三行
Out[34]:
In [35]:
A[1][1]#第二行的第二个,等价于A[1,1]
Out[35]:
In [36]:
A[2,:]#:代表所有数,这个代表第三行所有数.
Out[36]:
In [37]:
A[:,1]# 第二列的所有数
Out[37]:
In [38]:
A[1,1:]# 第二行,索引值为1~末端的值
Out[38]:
有关迭代¶
In [39]:
for row in A:
print(row)#默认按行迭代
In [40]:
for column in A.T:#T代表转置矩阵
print(column)
In [41]:
for item in A.flat:#.flat把多维数组压成一维的.返回的是一个迭代器
print(item)
In [42]:
A.flatten()#返回一个一维数组
Out[42]:
array的合并¶
In [60]:
A = np.ones((1,3))
B = np.array([2,2,2])
A,B
Out[60]:
上下合并¶
In [44]:
E = np.vstack((A,B,B,B))#vertical stack
E
Out[44]:
增维操作¶
In [45]:
print(B.T.shape)#没有转置,缺少维度
In [50]:
C = B[:,np.newaxis]#在列上增了一维
print(C,C.shape)
In [62]:
D = B[np.newaxis,:]#在行上增了一维
B = D
print(D,D.shape)
In [63]:
B
Out[63]:
左右合并¶
In [64]:
print(np.hstack((B,A)))#horizontal stack
In [65]:
C = np.concatenate((A,B,B),axis=0)#可以要求在哪一个维度合并,axis=0 为上下合并
C
Out[65]:
数列分割¶
等分割¶
In [66]:
print(np.split(C,3,axis=0)) #(array,split_section,axis=)
不等分割¶
In [67]:
print(np.array_split(C,4,axis=0))
In [68]:
print(np.vsplit(E,2))
In [69]:
print(np.hsplit(E,3))
copy 和 deep copy¶
In [70]:
a = np.arange(4)
b = a
c = a
d = b
In [71]:
a[0] = 11
a
Out[71]:
In [72]:
b#都变成11
Out[72]:
In [73]:
d
Out[73]:
In [74]:
d [1:3] = [22,33]
d
Out[74]:
In [ ]:
a#指针指向的内存地址一样,要变就一起变了
In [75]:
b = a.copy() #deep copy
a[3] = 44
b#最后一个没变44
Out[75]:
In [76]:
a
Out[76]: