往期文章:
NumPy - 数组操作
序号 形状及描述
- reshape 不改变数据的条件下修改形状
- flat 数组上的一维迭代器
- flatten 返回折叠为一维的数组副本
- 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)
- Python其中:a1, a2, …:
- 相同类型的数组序列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]]
添加/删除元素
序号 元素及描述
- resize 返回指定形状的新数组
- append 将值添加到数组末尾
- insert 沿指定轴将值插入到指定下标之前
- delete 返回删掉某个轴的子数组的新数组
- 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基础练习