import numpy as np
a = np.ones(shape=(2,2), dtype=int)
print(a)
a.resize(4,4)
print(a)
a.resize(3,3)
print(a)
返回一个新数组,不会改变原来的数组
a = np.arange(12)
print(a)
print('a.shape = ', a.shape)
for x in a: print(x,end = ' ')
print()
b = a.reshape(3,4) # 返回一个新数组
print('a.shape = ', a.shape)
print(b)
print('b.shape = ', b.shape)
for x in b: print(x)
flat属性可用于迭代其对应的ndarray, 但无法对元素进行修改
# 以行序逐元素访问
print(b.flat)
for x in b.flat:
print(x, end=' ')
x = x*2 # 该修改对原数组无效
print()
print(b)
返回一份数组拷贝,对拷贝所做的修改不会影响原始数组, 返回的数组是一维的
print(b.flatten() ) # 返回展开成一维的数组, 默认以行序展开
print(b.flatten(order = 'F')) # 以列序展开
a = np.arange(1,5).reshape(2,2)
b = np.arange(5,9).reshape(2,2)
print(a)
print()
print(b)
print( np.concatenate( (a,b), axis=0) ) # b 连接到a的下面
print( np.concatenate( (a,b), axis=1) ) # b 连接到 a的右边
print(np.hstack( (a,b) ) ) # 水平方向堆叠
print(np.vstack( (a,b) ) ) # 垂直方向堆叠
a = np.arange(12)
print(np.split(a, 2)) # 将a分成两个子数组
for x in np.split(a, 2):
print(x)
print(np.split(a, [3,6,9])) # 从指定位置拆分
for x in np.split(a, [3,6,9]):
print(x)
b = np.array( np.split(a, 3) )
print(b)
a = np.arange(1,7).reshape(2,3)
print(a)
# 默认情况下, 会将两个参数都展开成一维的, 然后连接起来
print(np.append(a, [0,0] ) )
print(np.append(a, [[0,1],[2,3]] ) )
# 如果指定了 axis 参数, 则以axis指定的方向连接前两个参数
print(np.append(a, [[7,8,9]], axis=0))
print(np.append(a, [[0,1],[2,3]], axis=1))
np.insert(arr, obj, values, axis)
a = np.arange(1, 7).reshape(2,3)
print(a)
# 默认情况下, 会将待插入的数组和要插入的数组展开, 然后再插入到指定位置
print(np.insert(a, 2, [0,0,0] ))
print(np.insert(a, 2, 0))
# print(np.insert(a, 2, [[0,0,0]] )) #error
# 如果指定了 axis参数, 则会在指定方向上进行插入
print(np.insert(a, 1, [0,0,0], axis=0))
# 注意参数是一列一列插进去的, 而不是作为一个整体一次性插入的
print(np.insert(a, 1, [[0,0],[-1,-1]], axis=1))
# 如果插入的是单个数字,并且指定了 axis参数, 则会在axis指定的方向上进行广播操作
print(np.insert(a, 1, 0, axis=0)) # 在 index=1的行上广播
print(np.insert(a, 1, 0, axis=1)) # 在 index=1的列上广播
np.delete(arr, obj, axis)
a = np.arange(1,13).reshape(3,4)
print(a)
# 删除对应下标的一个或多个元素
print(np.delete(a, 1))
print(np.delete(a, [2,5,7]))
print(np.delete(a, 1, axis=0)) # 删除下标为1的行
print(np.delete(a, [0,2], axis=1)) # 删除下标为0,2的列
np.unique(arr, return_index, return_inverse, return_counts)
arr如果不是一维的, 会自动展成一维数组, 并且对数组进行排序
a = np.array([[6,5,5,3,3,2,1], [2,3,4,7,7,6,1] ])
print(a)
print(np.unique(a))
b, idx = np.unique(a, return_index=True)
print(b)
print(idx) # 个元素在原数组(展开后)中首次出现的下标
b,cnt = np.unique(a, return_counts=True)
print(b)
print(cnt) #各元素在原数组中出现的次数
b, inv = np.unique(a, return_inverse=True)
print(b)
print(inv) # 原数组中各元素是b中的那一个(下标)的元素
print(b[inv]) # 用去重数组和原数组元素在新数组中的索引重构出原数组