import numpy as np
import datetime
# In[18]:
b = np.arange(24).reshape(2,3,4)
# In[19]:
b# Out[19]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])# In[20]:
b[0,:,-1]# Out[20]
array([ 3, 7, 11])# In[21]:
b[0,::-1,-1]
# Out[21]:
array([11, 7, 3])
# In[22]:
b[0,:-1,-1]
# Out[22]:
array([3, 7])
# In[23]:
b[0,::,1]
# Out[23]:
array([1, 5, 9])
# In[24]:
b[0,::-1,1]
# Out[24]:
array([9, 5, 1])
# In[25]:
b[::-1]
# Out[25]:
array([[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]],
[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]])将数组展平操作-- ravel,flatten
# In[26]:
b
# Out[27]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
# In[27]:
#ravel返回的是视图
b.ravel()
# Out[27]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
# In[28]:
#flatten会请求分配内存
b.flatten()
# Out[28]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23])
# In[29]:
#用元组设置维度
b.shape = (6,4)
# In[30]:
b
# Out[30]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
# In[31]:
b.transpose()
# Out[31]:
array([[ 0, 4, 8, 12, 16, 20],
[ 1, 5, 9, 13, 17, 21],
[ 2, 6, 10, 14, 18, 22],
[ 3, 7, 11, 15, 19, 23]])
# In[32]:
b
# Out[32]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
# In[33]:
#resize()与reshape()功能一样,但前者会直接修改数组
b.resize((4,6))
# In[34]:
b
# Out[34]:
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]])
# In[35]:
b.reshape((2,3,4))
# Out[35]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
# In[36]:
b
# Out[36]:
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]])# In[37]:
a = np.arange(9).reshape(3,3)
# In[38]:
a
# Out[38]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
# In[39]:
b = 2*a
# In[40]:
b
# Out[40]:
array([[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16]])
# In[41]:
#水平组合 -- hstack
np.hstack((a,b))
# Out[41]:
array([[ 0, 1, 2, 0, 2, 4],
[ 3, 4, 5, 6, 8, 10],
[ 6, 7, 8, 12, 14, 16]])
# In[42]:
#concatenate函数可实现同样的效果
np.concatenate((a,b),axis=1)
# Out[42]:
array([[ 0, 1, 2, 0, 2, 4],
[ 3, 4, 5, 6, 8, 10],
[ 6, 7, 8, 12, 14, 16]])
# In[43]:
#垂直组合 -- vstack
np.vstack((a,b))
# Out[43]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16]])
# In[44]:
#concatenate函数可实现同样的效果
np.concatenate((a,b),axis=0)
# Out[44]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16]])
# In[45]:
#深度组合 -- dstack
np.dstack((a,b))
# Out[45]:
array([[[ 0, 0],
[ 1, 2],
[ 2, 4]],
[[ 3, 6],
[ 4, 8],
[ 5, 10]],
[[ 6, 12],
[ 7, 14],
[ 8, 16]]])
# In[46]:
#列组合 -- column_stack
#对于二位数组,column_stack与hstack效果一样
oned = np.arange(2)
twice_oned = 2*oned
np.column_stack((oned,twice_oned))
# Out[46]:
array([[0, 0],
[1, 2]])
# In[47]:
#行组合 -- row_stack
#对于二位数组,row_stack与vstack效果一样
np.row_stack((oned,twice_oned))
# Out[47]:
array([[0, 1],
[0, 2]])# In[48]:
a
# Out[48]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
# In[49]:
#水平分割 -- hsplit
np.hsplit(a,3)
# Out[49]:
[array([[0],
[3],
[6]]), array([[1],
[4],
[7]]), array([[2],
[5],
[8]])]
# In[50]:
#可同样使用split
np.split(a,3,axis=1)
# Out[50]:
[array([[0],
[3],
[6]]), array([[1],
[4],
[7]]), array([[2],
[5],
[8]])]
# In[51]:
#垂直分割 -- vsplit
np.vsplit(a,3)
# Out[51]:
[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
# In[52]:
np.split(a,3,axis=0)
# Out[52]:
[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
# In[53]:
#深度分割 -- dsplit函数按照深度方向进行分割
c = np.arange(27).reshape(3,3,3)
print c
np.dsplit(c,3)
# Out[53]:
[[[ 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]]]
[array([[[ 0],
[ 3],
[ 6]],
[[ 9],
[12],
[15]],
[[18],
[21],
[24]]]), array([[[ 1],
[ 4],
[ 7]],
[[10],
[13],
[16]],
[[19],
[22],
[25]]]), array([[[ 2],
[ 5],
[ 8]],
[[11],
[14],
[17]],
[[20],
[23],
[26]]])]数组的属性
# In[54]:
b
# Out[54]:
array([[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16]])
# In[55]:
#ndim 给出数组的维数
b.ndim
# Out[55]:
2
# In[56]:
#size 给出数组元素的总数
b.size
# Out[56]:
9
# In[57]:
#itemsize,给出数组中元素在内存中所占字节数
b.itemsize
# Out[57]:
4
# In[58]:
#nbytes 整个数组所占的存储空间 是itemsize与size的乘积
b.nbytes
# Out[58]:
36
# In[59]:
#flat 将返回一个numpy.flatiter对象
b = np.arange(4).reshape(2,2)
f = b.flat
# In[60]:
[i for i in f]
# Out[60]:
[0, 1, 2, 3]数组转换
# In[61]:
#tolist 将数组转换为列表
b
# Out[61]:
array([[0, 1],
[2, 3]])
# In[62]:
b.tolist()
# Out[62]:
[[0, 1], [2, 3]]
# In[63]:
#astype 转换过程中指定数据类型
b.astype(float)
# Out[63]:
array([[ 0., 1.],
[ 2., 3.]])
NumPy数组操作详解
本文详细介绍了NumPy库中数组的各种操作方法,包括数组的创建、索引、切片、展平、形状调整、组合与分割等。同时,还讲解了如何通过不同函数获取数组的属性,以及如何进行数组之间的转换。
1228

被折叠的 条评论
为什么被折叠?



