python数据处理与分析入门-Numpy(2)

往期文章:

  1. numpy使用1

NumPy - 数组操作

序号 形状及描述

  1. reshape 不改变数据的条件下修改形状
  2. flat 数组上的一维迭代器
  3. flatten 返回折叠为一维的数组副本
  4. ravel 返回连续的展开数组
a = np.arange(8)
print('原始数组:'  )
print(a) 
print('\n'  )
b = a.reshape(4,2)
print('修改后的数组:'  )
print(b) 
print('\n'  )
print('展开的数组:')
print (b.flatten())
print('以 F 风格顺序展开的数组:')
print (b.flatten(order = 'F')
# order:'C' — 按行,'F' — 按列,'A' — 原顺序,'k' — 元素在内存中的出现顺序。
# 输出
原始数组:
[0 1 2 3 4 5 6 7]


修改后的数组:
[[0 1]
 [2 3]
 [4 5]
 [6 7]]


展开的数组:
[0 1 2 3 4 5 6 7]
以 F 风格顺序展开的数组:
[0 2 4 6 1 3 5 7]
print('原始数组:'  )
print(b) 
print('\n'  )
print('转置数组:'  )
print(np.transpose(b)) 
# 输出
原始数组:
[[0 1]
 [2 3]
 [4 5]
 [6 7]]


转置数组:
[[0 2 4 6]
 [1 3 5 7]]
broadcast_to

此函数将数组广播到新形状。 它在原始数组上返回只读视图。 它通常不连续。 如果新形状不符合 NumPy 的广播规则,该函数可能会抛出ValueError

a = np.arange(4).reshape(1,4)
print('原始数组:'  )
print(a) 
print('\n'  )
print('调用 broadcast_to 函数之后:')
print(np.broadcast_to(a,(4,4)))
# 输出
原始数组:
[[0 1 2 3]]


调用 broadcast_to 函数之后:
[[0 1 2 3]
 [0 1 2 3]
 [0 1 2 3]
 [0 1 2 3]]

numpy.concatenate

数组的连接是指连接。 此函数用于沿指定轴连接相同形状的两个或多个数组。 该函数接受以下参数。

numpy.concatenate((a1, a2, ...), axis)

  1. Python其中:a1, a2, …:
  2. 相同类型的数组序列axis:沿着它连接数组的轴,默认为 0
a = np.array([[1,2],[3,4]])

print('原始数组:'  )
print(a) 
print('\n'  )
b = np.array([[5,6],[7,8]])

print('第二个数组:'  )
print(b) 
print('\n'  ) 
# 两个数组的维度相同

print( '沿轴 0 连接两个数组:')
print (np.concatenate((a,b)))
print ('\n'  )

print ('沿轴 1 连接两个数组:')
print (np.concatenate((a,b),axis = 1))
# 输出
原始数组:
[[1 2]
 [3 4]]


第二个数组:
[[5 6]
 [7 8]]


沿轴 0 连接两个数组:
[[1 2]
 [3 4]
 [5 6]
 [7 8]]


沿轴 1 连接两个数组:
[[1 2 5 6]
 [3 4 7 8]]

添加/删除元素

序号 元素及描述

  1. resize 返回指定形状的新数组
  2. append 将值添加到数组末尾
  3. insert 沿指定轴将值插入到指定下标之前
  4. delete 返回删掉某个轴的子数组的新数组
  5. unique 寻找数组内的唯一元素
a = np.array([[1,2,3],[4,5,6]])

print ('第一个数组:')
print (a)
print ('\n')

print ('第一个数组的形状:')
print (a.shape)
print ('\n')  
b = np.resize(a, (3,2))

print ('第二个数组:')
print (b)
print ('\n'  )

print ('第二个数组的形状:')
print (b.shape)
print ('\n'  )
# 要注意 a 的第一行在 b 中重复出现,因为尺寸变大了

print ('修改第二个数组的大小:')
b = (np.resize(a,(3,3)))
print (b)
# 输出
第一个数组:
[[1 2 3]
 [4 5 6]]


第一个数组的形状:
(2, 3)


第二个数组:
[[1 2]
 [3 4]
 [5 6]]


第二个数组的形状:
(3, 2)


修改第二个数组的大小:
[[1 2 3]
 [4 5 6]
 [1 2 3]]
a = np.array([[1,2,3],[4,5,6]])

print('第一个数组:')
print(a)
print('\n')  

print('向数组添加元素:')
print(np.append(a, [7,8,9]))
print('\n')  

print('沿轴 0 添加元素:')
print(np.append(a, [[7,8,9]],axis = 0))
print('\n')  

print('沿轴 1 添加元素:')
print(np.append(a, [[5,5,5],[7,8,9]],axis = 1))
# 输出
第一个数组:
[[1 2 3]
 [4 5 6]]


向数组添加元素:
[1 2 3 4 5 6 7 8 9]


沿轴 0 添加元素:
[[1 2 3]
 [4 5 6]
 [7 8 9]]


沿轴 1 添加元素:
[[1 2 3 5 5 5]
 [4 5 6 7 8 9]]
a = np.array([[1,2],[3,4],[5,6]])

print('第一个数组:')
print(a)
print('\n'  )

print('未传递 Axis 参数。 在插入之前输入数组会被展开。')
print(np.insert(a,3,[11,12]))
print('\n'  )
print('传递了 Axis 参数。 会广播值数组来配输入数组。')

print('沿轴 0 广播:')
print(np.insert(a,1,[11],axis = 0))
print('\n'  )

print('沿轴 1 广播:')
print(np.insert(a,1,11,axis = 1))
# 输出
第一个数组:
[[1 2]
 [3 4]
 [5 6]]


未传递 Axis 参数。 在插入之前输入数组会被展开。
[ 1  2  3 11 12  4  5  6]


传递了 Axis 参数。 会广播值数组来配输入数组。
沿轴 0 广播:
[[ 1  2]
 [11 11]
 [ 3  4]
 [ 5  6]]


沿轴 1 广播:
[[ 1 11  2]
 [ 3 11  4]
 [ 5 11  6]]
a = np.arange(12).reshape(3,4)
print('第一个数组:')
print(a)
print('\n'  )

print('未传递 Axis 参数。 在插入之前输入数组会被展开。')
print(np.delete(a,5))
print('\n'  )

print('删除第二列:'  )
print(np.delete(a,1,axis = 0))
print('\n'  )

print('包含从数组中删除的替代值的切片:')
a = np.array([1,2,3,4,5,6,7,8,9,10])
print(np.delete(a, np.s_[::3]))
# 输出 
第一个数组:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]


未传递 Axis 参数。 在插入之前输入数组会被展开。
[ 0  1  2  3  4  6  7  8  9 10 11]


删除第二列:
[[ 0  1  2  3]
 [ 8  9 10 11]]


包含从数组中删除的替代值的切片:
[2 3 5 6 8 9]

练习

#输出第1行  
arr=np.arange(1,10).reshape(3,3)
print(arr)
print("===================")
print(arr[0])  
print("===================")
# #输出2,3行  
print(arr[1:])  
print("===================")
#输出第一行第一个  
print(arr[1,1])
print("===================")
#输出所有行和2,3列  
print(arr[:,1:])

更多内容请查看我的gittee仓库 : Python基础练习

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值