numpy的数据类型实际上是dtype对象的实例,并对应唯一的字符, 包括: np.bool_, np.int32, np.float32等等。
每个内建类型,都有一个唯一定义它的字符代码
数据类型对象(dtype)
作用: 与数据对应的内存区域如何使用。
创建数据类型对象
import numpy as np
# 案例一:创建数据类型对象
dt = np.dtype(np.int32)
print(dt)
print(type(dt))
# int32
#
# 案例二:使用字符代码创建数据对象
dt = np.dtype("i4")
print(dt)
print(type(dt))
# int32
#
# 案例三:创建复杂类型的数据对象
student = np.dtype([('name', 'S20'), ('age', 'i4'), ('marks', 'f4')])
print(student)
print(type(student))
# [('name', 'S20'), ('age', '
#
import numpy as np
# 案例一:创建一个一维数组
arr = np.array([1, 2, 3, 4])
print(arr)
print(type(arr))
# [1 2 3 4]
#
# 案例二:多维数组
arr = np.array([[1, 2, 3], [2, 3, 4]])
print(arr)
print(type(arr))
# [[1 2 3]
# [2 3 4]]
#
# 案例三: 限制最小维度
arr = np.array([1, 2, 3], ndmin=2)
print(arr)
print(type(arr))
# [[1 2 3]]
#
# 案例四:限制类型
arr = np.array([1, 2, 3], dtype=np.float)
print(arr)
print(type(arr))
# [1. 2. 3.]
#
# 案例五: 使用结构化数据
student = np.dtype([('name', 'S20'), ('age', 'i4'), ('mark', 'f4')])
arr = np.array([('ren', 18, 20.99), ('li', 20, 30.88)], dtype=student)
print(arr)
print(type(arr))
# [(b'ren', 18, 20.99) (b'li', 20, 30.88)]
#
import numpy as np
# 1:创建一维数组
arr = np.asarray([1, 2, 3, 4])
print(arr)
print(type(arr))
# [1 2 3 4]
#
# 2: 创建二维数组
arr = np.asarray([[1, 2, 3], [4, 5, 6]])
print(arr)
print(type(arr))
# [[1 2 3]
# [4 5 6]]
#
# 3: 创建复杂类型
student = np.dtype([('name', 'S20'), ('age', 'i4'), ('mark', 'f4')])
arr = np.asarray([('ren', 5, 100.1), ('li', 3, 20.0)], dtype=student)
print(arr)
print(type(arr))
# [(b'ren', 5, 100.1) (b'li', 3, 20. )]
#
# 4: 创建(列表套字典元素类型)
arr = np.asarray([[(1, 2, 3)], [(2, 3, 4)]])
print(arr)
print(type(arr))
# [[[1 2 3]]
# [[2 3 4]]]
#
import numpy as np
# 创建一维数组两行三列的初始化数组
arr = np.empty([2, 3], dtype=int)
print(arr)
print(type(arr))
# [[ 0 2043 1]
# [ 0 0 0]]
#
import numpy as np
# 创建一维数组(三行四列)
arr = np.zeros([3, 2], dtype='f4')
print(arr)
print(type(arr))
# [[0. 0.]
# [0. 0.]
# [0. 0.]]
#
# 创建结构化数组
arr = np.zeros([2, 3], dtype=[('x', 'i4'), ('y', 'f4'), ('z', 'S30')])
print(arr)
print(type(arr))
# [[(0, 0., b'') (0, 0., b'') (0, 0., b'')]
# [(0, 0., b'') (0, 0., b'') (0, 0., b'')]]
#
import numpy as np
# 创建一维数组(三行四列)
arr = np.ones([3, 2], dtype='f4')
print(arr)
print(type(arr))
# [[1. 1.]
# [1. 1.]
# [1. 1.]]
#
# 创建结构化数组
arr = np.ones([2, 3], dtype=[('x', 'i4'), ('y', 'f4'), ('z', 'S30')])
print(arr)
print(type(arr))
# [[(1, 1., b'1') (1, 1., b'1') (1, 1., b'1')]
# [(1, 1., b'1') (1, 1., b'1') (1, 1., b'1')]]
#
import numpy as np
# 1: 生成4 * 4的对角矩阵(中间是1,两边是0)
arr = np.eye(N=4, dtype=int)
print(arr)
print(type(arr))
# [[1 0 0 0]
# [0 1 0 0]
# [0 0 1 0]
# [0 0 0 1]]
#
# 2: 生成对角矩阵(3 * 4)
arr = np.eye(N=3, M=4, dtype=int)
print(arr)
print(type(arr))
# [[1 0 0 0]
# [0 1 0 0]
# [0 0 1 0]]
#
import numpy as np
# 1: 生成1~10的一维数组
arr = np.arange(start=0, stop=10, step=1)
print(arr)
# [0 1 2 3 4 5 6 7 8 9]
arr = np.arange(start=0, stop=10)
print(arr)
# [0 1 2 3 4 5 6 7 8 9]
# 2 生成[2, 4, 6, 8]
arr = np.arange(start=2, stop=10, step=2)
print(arr)
# [2 4 6 8]
import numpy as np
# 1: 读取字符串中的全部数据
test_str = b'ren shan wen is a good man.'
arr = np.frombuffer(test_str, dtype="S1")
print(arr)
# [b'r' b'e' b'n' b' ' b's' b'h' b'a' b'n' b' ' b'w' b'e' b'n' b' ' b'i'
# b's' b' ' b'a' b' ' b'g' b'o' b'o' b'd' b' ' b'm' b'a' b'n' b'.']
# 2: 只将"a good man" 读取
test_str = b'ren shan wen is a good man.'
arr = np.frombuffer(test_str, dtype="S1", count=10, offset=16)
print(arr)
# [b'a' b' ' b'g' b'o' b'o' b'd' b' ' b'm' b'a' b'n']
import numpy as np
# 1: 读取字符串中的全部数据
test_list = ['ren', 'shan', "wen"]
arr = np.fromiter(test_list, dtype="S3")
print(arr)
# [b'ren' b'sha' b'wen']
# 2: 读取前2位
test_list = ['ren', 'shan', "wen"]
arr = np.fromiter(test_list, dtype="S3", count=2)
print(arr)
# [b'ren' b'sha']
# 3: 读取后两位
test_list = ['ren', 'shan', "wen"]
arr = np.fromiter(test_list[-2:], dtype="S3", count=2)
print(arr)
# [b'sha' b'wen']
import numpy as np
arr = np.linspace(start=1, stop=10, num=10, dtype="i4")
print(arr)
# [ 1 2 3 4 5 6 7 8 9 10]
arr = np.linspace(start=1, stop=9, num=5, dtype="i4")
print(arr)
# [1 3 5 7 9]
import numpy as np
arr = np.logspace(start=1.0, stop=2.0, num=10)
print(arr)
# [ 10. 12.91549665 16.68100537 21.5443469 27.82559402
# 35.93813664 46.41588834 59.94842503 77.42636827 100. ]
arr = np.logspace(start=1.0, stop=10.0, num=10, base=2.0)
print(arr)
# [ 2. 4. 8. 16. 32. 64. 128. 256. 512. 1024.]
import numpy as np
rand_int = np.random.rand()
print(rand_int)
# 0.9589287295877952
arr = np.random.rand(3)
print(arr)
# [0.42679038 0.49927222 0.13372776]
arr = np.random.rand(3, 2)
print(arr)
# [[0.93187502 0.74321757]
# [0.42415062 0.96488193]
# [0.31604436 0.3220751 ]]
import numpy as np
rand_int = np.random.random()
print(rand_int)
# 0.9589287295877952
arr = np.random.random(3)
print(arr)
# [0.42679038 0.49927222 0.13372776]
import numpy as np
arr = np.random.randint(low=0, high=10, size=10)
print(arr)
# [5 8 3 3 7 3 9 6 9 6]
import numpy as np
arr = np.random.randn()
print(arr)
# 0.03645361634459795
arr = np.random.randn(3)
print(arr)
# [-1.728654 0.34386948 -0.90550311]
arr = np.random.randn(3, 2)
print(arr)
# [[-0.24651029 -0.87297746]
# [ 2.30646279 -0.52588351]
# [ 0.41470461 -0.57592071]]
import numpy as np
# 1:打印数组的秩
arr = np.arange(24)
print(arr.ndim)
# 1
arr2 = arr.reshape(2, 3, 4)
print(arr2.ndim)
# 3
# 2: 打印数组的维度
print(arr2.shape)
# (2, 3, 4)
# 3: 修改数组的维度
arr3 = np.array([[1, 2, 3], [4, 5, 6]])
arr3.shape = (3, 2)
print(arr3)
# [[1 2]
# [3 4]
# [5 6]]
# 4: 打印数组的大小
print(arr3.size)
# 6
# 5: 打印数据类型
print(arr3.dtype)
# int64
# 6: 打印元素内存元素大小
print(arr3.itemsize)
# 8 (每个元素8个字节)
# 7: 返回元素内存信息
print(arr3.flags)
# C_CONTIGUOUS : True
# F_CONTIGUOUS : False
# OWNDATA : True
# WRITEABLE : True
# ALIGNED : True
# WRITEBACKIFCOPY : False
import numpy as np
# 1: 下标方式访问
arr = np.arange(10)
print(arr[9])
# 9
# 2: 基于原来新建ndarray对象
arr2 = arr[slice(2, 8, 2)]
print(arr2)
# [2 4 6]
# 3: 冒号方式
arr3 = arr[2: 8: 2]
print(arr3)
# [2 4 6]
# 4: 多维数据提取
arr = np.arange(15)
arr.shape = (5, 3)
print(arr)
# [[ 0 1 2]
# [ 3 4 5]
# [ 6 7 8]
# [ 9 10 11]
# [12 13 14]]
arr2 = arr[1:] # 截取第二行往后的
print(arr2)
# [[ 3 4 5]
# [ 6 7 8]
# [ 9 10 11]
# [12 13 14]]
arr3 = arr[..., 2:] # 截取第二列往后的
print(arr3)
# [[ 2]
# [ 5]
# [ 8]
# [11]
# [14]]
import numpy as np
# 1: 获取0,0 1,1 2,0下标的元素
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr[[0, 1, 2], [0, 1, 0]])
# [1 5 7]
# 2: 获取第一行之后的, 和第一列之后的交集元素
print(arr[1:, 1:])
# [[5 6]
# [8 9]]
# 3:获取第一行之后和1, 2列的元素
print(arr[1:, [1, 2]])
# [[5 6]
# [8 9]]
# 4: 获取全部的行, 和1, 2列的元素
print(arr[..., [1, 2]])
# [[2 3]
# [5 6]
# [8 9]]
# 5: 获取 [00, 02], [30, 32]的元素
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])
print(arr[[0, 0, 3, 3], [0, 2, 0, 2]])
# [ 1 3 10 12]
print(arr[[[0, 0], [3, 3]], [[0, 2], [0, 2]]])
# [[ 1 3]
# [10 12]]
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[arr > 5])
# [6]
arr = np.array([np.nan, 1, 2, np.nan])
print(arr[np.isnan(arr)])
# [nan nan]
print(arr[~np.isnan(arr)])
# [1. 2.]
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr1 + arr2)
# [5 7 9]
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([1, 1, 1])
print(arr1 + arr2)
# [[2 3 4]
# [5 6 7]]
import numpy as np
arr1 = np.arange(12)
arr1 = arr1.reshape(3, 4)
print(arr1)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
for i in np.nditer(arr1):
print(i, end=", ")
# 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
for i in np.nditer(arr1, order="C"):
print(i, end=", ")
print("\n")
# 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
for i in np.nditer(arr1, order="F"):
print(i, end=", ")
# 0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11,
for i in np.nditer(arr1, order="C", op_flags=["readwrite"]):
i[...] = i * 2
print(i, end=", ")
print("\n")
# 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22,
for i in np.nditer(arr1, order="C", op_flags=["readwrite"], flags=["external_loop"]):
i[...] = i * 2
print(i)
print("\n")
# [ 0 2 4 6 8 10 12 14 16 18 20 22]
import numpy as np
arr1 = np.arange(12).reshape(3, 4)
print(arr1)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
arr2 = np.arange(1, 5)
print(arr2)
# [1 2 3 4]
for x, y in np.nditer([arr1, arr2]):
print("%s %s" % (x, y))
# 0 1
# 1 2
# 2 3
# 3 4
# 4 1
# 5 2
# 6 3
# 7 4
# 8 1
# 9 2
# 10 3
# 11 4
reshape(shape, order)
flat:
flatten()
ravel()
import numpy as np
# 1:reshape修改数组形状
arr = np.arange(12)
arr1 = arr.reshape(3, 4)
print(arr1)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
# 2: 使用flat展平数组
for i in arr1.flat:
print(i, end=", ")
print("\n")
# 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
# 3: flatten 展平数组
arr2 = arr1.flatten(order="F")
print(arr2)
# [ 0 4 8 1 5 9 2 6 10 3 7 11]
arr2[0] = 100
print(arr1) # 原数组没有改变
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
# 4: ravel 展平数组
arr3 = arr1.ravel(order="F")
print(arr3)
# [ 0 4 8 1 5 9 2 6 10 3 7 11]
arr3[0] = 100
print(arr1)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
arr4 = arr1.ravel(order="C")
print(arr4)
# [ 0 4 8 1 5 9 2 6 10 3 7 11]
arr4[0] = 100 # C 方式改变形状,则会影响到原来的数组
print(arr1)
# [[100 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
transpose(a, axes)
a.T
rollaxis(a, axis, start=0):
swapaxes(a, axis1, axis2)
import numpy as np
arr = np.arange(12).reshape(3, 4)
print(arr)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
# 1:transpose翻转数组
arr1 = np.transpose(arr)
print(arr1)
# [[ 0 4 8]
# [ 1 5 9]
# [ 2 6 10]
# [ 3 7 11]]
# 2: T方式翻转数组
arr2 = arr.T
print(arr2)
# [[ 0 4 8]
# [ 1 5 9]
# [ 2 6 10]
# [ 3 7 11]]
# 3: rollaxis翻转数组
arr3 = np.rollaxis(arr, axis=1)
print(arr3)
# [[ 0 4 8]
# [ 1 5 9]
# [ 2 6 10]
# [ 3 7 11]]
# 4: swapaxes进行翻转
arr4 = np.swapaxes(arr, 0, 1)
print(arr4)
# [[ 0 4 8]
# [ 1 5 9]
# [ 2 6 10]
# [ 3 7 11]]
# 5: 三维数组,交换维度
arr = np.arange(24).reshape(2, 3, 4)
print(arr)
# [[[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
#
# [[12 13 14 15]
# [16 17 18 19]
# [20 21 22 23]]]
arr2 = np.swapaxes(arr, 1, 2)
print(arr2)
# [[[ 0 4 8]
# [ 1 5 9]
# [ 2 6 10]
# [ 3 7 11]]
#
# [[12 16 20]
# [13 17 21]
# [14 18 22]
# [15 19 23]]]
broadcast()
broadcast_to()
expand_dims()
squeeze()
import numpy as np
arr1 = np.array([[1], [2], [4]])
arr2 = np.array([4, 5, 6])
# arr2广播到arr1维度
arr = np.broadcast(arr1, arr2)
new_arr = np.empty(arr.shape)
print(new_arr)
# 改变维度
a = np.arange(1, 5).reshape(1, 4)
print(a)
# [[1 2 3 4]
b = np.broadcast_to(a, (2, 4))
print(b)
# [[1 2 3 4]
# [1 2 3 4]]
# 增加维度
x = np.arange(1, 5).reshape((2, 2))
print(x)
# [[1 2]
# [3 4]]
y = np.expand_dims(x, axis=0)
print(y)
# [[[1 2]
# [3 4]]]
# 减少维度(只能减少维度值为1的)
z = np.squeeze(y)
print(z)
# [[1 2]
# [3 4]]
import numpy as np
# 1: concatenate合并数组
x = np.arange(4).reshape((2, 2))
y = np.arange(4, 8).reshape((2, 2))
z = np.concatenate((x, y), axis=0)
print(z)
# [[0 1]
# [2 3]
# [4 5]
# [6 7]]
h = np.concatenate((x, y), axis=1)
print(h)
# [[0 1 4 5]
# [2 3 6 7]]
# 2: stack合并数组(会新增一个维度)
z2 = np.stack((x, y), axis=0)
print(z2)
# [[[0 1]
# [2 3]]
#
# [[4 5]
# [6 7]]]
h2 = np.stack((x, y), axis=1)
print(h2)
# [[[0 1]
# [4 5]]
#
# [[2 3]
# [6 7]]]
# 3: hstack 合并
z3 = np.hstack((x, y))
print(z3)
# [[0 1 4 5]
# [2 3 6 7]]
# 4: vstack 合并
z4 = np.vstack((x, y))
print(z4)
# [[0 1]
# [2 3]
# [4 5]
# [6 7]]
import numpy as np
# 1: 切分一维数组
arr = np.arange(12)
arr1 = np.split(arr, 2) # 平均分成两份
print(arr1)
# [array([0, 1, 2, 3, 4, 5]), array([ 6, 7, 8, 9, 10, 11])]
arr2 = np.split(arr, [3, 6]) # 从下标为3的地方开始切下标为5的结束
print(arr2)
# [array([0, 1, 2]), array([3, 4, 5]), array([ 6, 7, 8, 9, 10, 11])]
# 2: 切分二维数组
arr = np.arange(12).reshape(3, 4)
print(arr)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
arr1 = np.split(arr, 3)
print(arr1)
# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
arr1 = np.vsplit(arr, 3)
print(arr1)
# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
arr2 = np.split(arr, 4, axis=1)
print(arr2)
# [array([[0],
# [4],
# [8]]), array([[1],
# [5],
# [9]]), array([[ 2],
# [ 6],
# [10]]), array([[ 3],
# [ 7],
# [11]])]
arr2 = np.hsplit(arr, 4)
print(arr2)
# [array([[0],
# [4],
# [8]]), array([[1],
# [5],
# [9]]), array([[ 2],
# [ 6],
# [10]]), array([[ 3],
# [ 7],
# [11]])]
import numpy as np
# 重置数组
arr = np.arange(6).reshape(2, 3)
print(arr)
# [[0 1 2]
# [3 4 5]]
arr1 = np.resize(arr, (3, 2))
print(arr1)
# [[0 1]
# [2 3]
# [4 5]]
# 不够从开头开始抄
arr2 = np.resize(arr, (3, 3))
print(arr2)
# [[0 1 2]
# [3 4 5]
# [0 1 2]]
import numpy as np
arr = np.arange(6).reshape(2, 3)
print(arr)
# [[0 1 2]
# [3 4 5]]
arr1 = np.append(arr, [7, 8, 9])
print(arr1)
# [0 1 2 3 4 5 7 8 9]
arr2 = np.append(arr, [[7, 8, 9]], axis=0)
print(arr2)
# [[0 1 2]
# [3 4 5]
# [7 8 9]]
arr3 = np.append(arr, [[7, 8], [8, 9]], axis=1)
print(arr3)
# [[0 1 2 7 8]
# [3 4 5 8 9]]
import numpy as np
arr = np.arange(6).reshape(3, 2)
print(arr)
# [[0 1]
# [2 3]
# [4 5]]
arr2 = np.insert(arr, 3, [11, 12])
print(arr2)
# [ 0 1 2 11 12 3 4 5]
arr3 = np.insert(arr, 3, [11, 12], axis=0)
print(arr3)
# [[ 0 1]
# [ 2 3]
# [ 4 5]
# [11 12]]
arr4 = np.insert(arr, 1, [11], axis=1)
print(arr4)
# [[ 0 11 1]
# [ 2 11 3]
# [ 4 11 5]]
import numpy as np
arr = np.arange(12).reshape(3, 4)
print(arr)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
arr2 = np.delete(arr, 1)
print(arr2)
# [ 0 2 3 4 5 6 7 8 9 10 11]
arr3 = np.delete(arr, 1, axis=0)
print(arr3)
# [[ 0 1 2 3]
# [ 8 9 10 11]]
arr4 = np.delete(arr, 1, axis=1)
print(arr4)
# [[ 0 2 3]
# [ 4 6 7]
# [ 8 10 11]]
import numpy as np
arr = np.array([1, 2, 3, 4, 1, 2, 7, 8, 9, 1, 2, 3])
print(arr)
# [1 2 3 4 1 2 7 8 9 1 2 3]
arr1 = np.unique(arr)
print(arr1)
# [1 2 3 4 7 8 9]
arr2 = np.unique(arr, return_index=True)
print(arr2)
# (array([1, 2, 3, 4, 7, 8, 9]), array([0, 1, 2, 3, 6, 7, 8]))
arr3 = np.unique(arr, return_inverse=True)
print(arr3)
# (array([1, 2, 3, 4, 7, 8, 9]), array([0, 1, 2, 3, 0, 1, 4, 5, 6, 0, 1, 2]))
arr4 = np.unique(arr, return_counts=True)
print(arr4)
# (array([1, 2, 3, 4, 7, 8, 9]), array([3, 3, 2, 1, 1, 1, 1]))
import numpy as np
# add
print(np.char.add(["good"], ["good"]))
print(np.char.add(["good", "night"], ["good", "night"]))
# ['goodgood']
# ['goodgood' 'nightnight']
# multiply
print(np.char.multiply("good", 3))
# goodgoodgood
# center
print(np.char.center(["nice", "handsome"], 20, fillchar="*"))
# ['********nice********' '******handsome******']
# capitalize
print(np.char.capitalize(["suck is a good man"]))
# ['Suck is a good man']
# title
print(np.char.title(["suck is a good man"]))
# ['Suck Is A Good Man']
# lower
print(np.char.lower(["SuCk is A gOod Man"]))
# ['suck is a good man']
# upper
print(np.char.upper(["SuCk is A gOod Man"]))
# ['SUCK IS A GOOD MAN']
# split
print(np.char.split(["SuCk is A gOod Man"]))
# [list(['SuCk', 'is', 'A', 'gOod', 'Man'])]
# splitlines
print(np.char.splitlines(["SuCk is \n A gOod \n Man"]))
# [list(['SuCk is ', ' A gOod ', ' Man'])]
# strip
print(np.char.strip(["******SuCk is A gOod Man****"], "*"))
# ['SuCk is A gOod Man']
# join
print(np.char.join("-", ["nice", "good"]))
# ['n-i-c-e' 'g-o-o-d']
print(np.char.join(["-", "*"], ["nice", "good"]))
# ['n-i-c-e' 'g*o*o*d']
# replace
print(np.char.replace(["suck is a good man"], "good", "handsome"))
# ['suck is a handsome man']
# encode
print(np.char.encode(["suck is a good man"], "utf-8"))
#[b'suck is a good man']
# decode
print(np.char.decode([b"suck is a good man"], "utf-8"))
# ['suck is a good man']
import numpy as np
arr = np.array([1, 0.5, 3])
arr2 = np.reciprocal(arr)
print(arr2)
# [1. 2. 0.33333333]
arr3 = np.power([1, 2, 3], [1, 2, 3])
print(arr3)
# [ 1 4 27]
arr4 = np.mod([5, 3], [3, 2])
print(arr4)
# [2 1]
arr5 = np.remainder([5, 3], [3, 2])
print(arr5)
# [2 1]
import numpy as np
x = np.random.randint(1, 11, 12).reshape(3, 4)
print(x)
# 排序
a = np.sort(x)
print(a)
# 按列排序
b = np.sort(x, axis=0)
print(b)
# 按照字段排序
dt = np.dtype([("name", "S10"), ("age", int)])
y = np.array([("lidehua", 93), ("xakxns", 44), ("daddasd", 55)], dtype=dt)
print(np.sort(y, order="age"))
# [(b'xakxns', 44) (b'daddasd', 55) (b'lidehua', 93)]
# 返回应该顺序的下标
x = np.array([3, 1, 2])
a = np.argsort(x)
print(a)
# [1 2 0]
b = x[a]
print(b)
# [1 2 3]
搜索给定轴最大值和最小值(索引)
返回非0元素的索引:
返回给定条件的索引:
抽取符合条件的元素返回
import numpy as np
arr = np.array([1, 2, 3])
arr1 = np.array([[1, 4, 3], [2, 2, 6]])
# min
print(np.min(arr))
# 1
print(np.min(arr1, axis=0))
# [1 2 3]
print(np.min(arr1, axis=1))
# [1 2]
print(np.argmin(arr1, axis=0))
# [0 1 0]
print(np.argmax(arr1, axis=1))
# [1 2]
arr = np.array([0, 1, 2, 3])
print(np.nonzero(arr))
# (array([1, 2, 3]),)
print(np.where(arr > 2))
# (array([3]),) # 返回的下标
arr = np.array([[31, 40, 4], [2, 23, 4], [50, 3, 60]])
con = np.mod(arr, 2) == 0
print(np.extract(con, arr))
# [40 4 2 4 50 60]