最新消息:

Python中的Numpy最详细代码实例笔记

Python 少儿编程 1542浏览 0评论

1 安装numpy

我的Python 3.6.4 安装路径为 D:PythonPython36

环境变量中的Path加入 D:PythonPython36和D:PythonPython36Scripts

在命令行中测试pip3是否已安装,后面我们将用pip3安装numpy。

输入pip3 -v 如果提示 Fatal error in launcher: Unable to create process using ‘”‘ 则需要升级pip3,输入命令行 python3 -m pip install –upgrade pip(我把python.exe重命名为python3.exe了,所以是 python3 -m ……),如果问题还没有解决则需要强制安装,输入命令python3 -m pip install –upgrade pip –force-reinstall

Python中的Numpy最详细代码实例笔记
image

用pip3安装numpy,输入命令行 pip3 install numpy

Python中的Numpy最详细代码实例笔记
image

2 初识numpy的强大之处

通过向量相加来认识numpy的强大之处。

模块的导入是通过import语句,下面是三种import语句的格式:

import numpy #直接导入Numpy模块
import numpy as np #导入Numpy模块后并将其改名为np
from numpy import array #从Numpy模块中导入其中的array方法

用python的普通列表来进行向量相加

def pythonsum(n):
    a = list(range(n))
    b = list(range(n))
    c = []
    for i in range(len(a)):
        a[i] = i ** 2
        b[i] = i ** 3
        c.append(a[i] + b[i])
    return c

用numpy来进行向量相加

import numpy as np
def numpysum(n):
    a = np.arange(n)**2
    b = np.arange(n)**3
    c = a+b
    return c

比较二者的效率

from datetime import datetime
size = 1000

start = datetime.now()
c = pythonsum(size)
delta = datetime.now() - start
print("The last 2 elements of the sum", c[-2:])
print("PythonSum elapsed time in microseconds", delta.microseconds)

start = datetime.now()
c = numpysum(size)
delta = datetime.now() - start
print("The last 2 elements of the sum", c[-2:])
print("NumPySum elapsed time in microseconds", delta.microseconds)

#运行结果:
# The last 2 elements of the sum [995007996, 998001000]
# PythonSum elapsed time in microseconds 1002
# The last 2 elements of the sum [995007996 998001000]
# NumPySum elapsed time in microseconds 0

3 用numpy创建数组

Python中的Numpy最详细代码实例笔记
image
arr0 = np.array([2, 3, 4])  # 通过列表创建一维数组
print(arr0)
# result:[2 3 4]

arr1 = np.array([[1, 2], [3, 4]])  # 通过列表创建二维数组
print(arr1)
# result:
# [[1 2]
#  [3 4]]

arr2 = np.array([(1.3, 9, 2.0), (7, 6, 1)])  # 通过元组创建数组
print(arr2)
# result:
# [[1.3 9.  2. ]
#  [7.  6.  1. ]]

arr3 = np.zeros((2, 3))  # 通过元组(2, 3)生成全零矩阵
print(arr3)
# result:
# [[0. 0. 0.]
#  [0. 0. 0.]]

arr4 = np.identity(3)  # 生成3维的单位矩阵
print(arr4)
# result:
# [[1. 0. 0.]
#  [0. 1. 0.]
#  [0. 0. 1.]]

arr5 = np.random.random(size=(2, 3))  # 生成每个元素都在[0,1]之间的随机矩阵
print(arr5)
# result:
# [[0.71850624 0.96298612 0.1684721 ]
#  [0.77269464 0.12644678 0.701804  ]]

arr6 = np.arange(5, 20, 3)  # 生成等距序列,参数为起点,终点,步长值.含起点值,不含终点值
print(arr6)
# result:[ 5  8 11 14 17]

arr7 = np.linspace(0, 2, 9)  # 生成等距序列,参数为起点,终点,步长值.含起点值和终点值
print(arr7)
# result:[0.   0.25 0.5  0.75 1.   1.25 1.5  1.75 2.  ]

4 用numpy访问数组

在科学计算时,我们需要频繁访问数组元素,通过Numpy索引、切片、迭代器方法能够快速灵活地访问数组

4.1 查看数组的属性
# 查看数组的属性
arr2 = np.array([(1.3, 9, 2.0), (7, 6, 1)])  # 通过元组创建数组
print(arr2.shape)  # 返回矩阵的规格
# result: (2,3)
print(arr2.ndim)  # 返回矩阵的秩
# result: 2
print(arr2.size)  # 返回矩阵元素总数
# result: 6
print(arr2.itemsize) #
# result: 8
print(arr2.nbytes) #
# result: 48
print(arr2.dtype.name)  # 返回矩阵元素的数据类型
# result: float64
print(type(arr2))  # 查看整个数组对象的类型
# result: <class 'numpy.ndarray'>

b = np.array([1. + 1.j, 3. + 2.j])
b.real
# result:array([1., 3.])
b.imag
# result:array([1., 2.])

b = np.arange(4).reshape(2, 2)
b.flat
# result:<numpy.flatiter object at 0x0000024FF4C32CF0>
b.flat[2]
# result:2
4.2 通过索引和切片访问数组元素
# 通过索引和切片访问数组元素
def f(x, y):
    return 10 * x + y

arr8 = np.fromfunction(f, (4, 3), dtype=int)
print(arr8)
# result:
# [[ 0  1  2]
#  [10 11 12]
#  [20 21 22]
#  [30 31 32]]

print(arr8[1, 2])  # 返回矩阵第1行,第2列的元素(注意下标从0开始)
# result: 12
print(arr8[0:2, :])  # 切片,返回矩阵前2行
# result:
# [[ 0  1  2]
#  [10 11 12]]
print(arr8[:, 1])  # 切片,返回矩阵第1列
# result: [ 1 11 21 31]
print(arr8[-1])  # 切片,返回矩阵最后一行
# reuslt: [30 31 32]
print(arr8[::-1])  #?
# reuslt:
# [[30 31 32]
#  [20 21 22]
#  [10 11 12]
#  [ 0  1  2]]
4.3 通过迭代器访问数组元素
# 通过迭代器访问数组元素
for row in arr8:
    print(row)
# result:
# [0 1 2]
# [10 11 12]
# [20 21 22]
# [30 31 32]
for element in arr8.flat:
    print(element)
# 输出矩阵全部元素
# result:
# 0
# 1
# 2
# 10
# 11
# 12
# 20
# 21
# 22
# 30
# 31
# 32

5 numpy的数据类型

5.1 基本数据类型
Python中的Numpy最详细代码实例笔记
image
print("float64(42)=", np.float64(42))
# result:float64(42)= 42.0
print("int8(42.0)=", np.int8(42.0))
# result:int8(42.0)= 42
print("bool(42)=", np.bool(42))
# result:bool(42)= True
print("bool(0)=", np.bool(0))
# result:bool(0)= False
print("bool(42.0)=", np.bool(42.0))
# result: bool(42.0)= True
print("int8(True)=", np.int8(True))
# result:int8(True)= 1
print("int8(False)=", np.int8(False))
# result:int8(False)= 0
print("float(True)=", np.float(True))
# result:float(True)= 1.0
print("float(False)=", np.float(False))
# result:float(False)= 0.0
print("arange(7, dtype=uint16)=", np.arange(7, dtype=np.uint16))
# result:arange(7, dtype=uint16)= [0 1 2 3 4 5 6]
5.2 numpy中的数组元素要保持同一类型
# numpy中的数组元素要保持同一类型
print("int(42.0 + 1.j)=")
try:
    print(np.int(42.0 + 1.j))
except TypeError:
    print("TypeError")
    
# result:
# int(42.0 + 1.j)=
# TypeError

print("float(42.0 + 1.j)=", float(42.0 + 1.j))
# result:TypeError: can't convert complex to float
5.3 数据类型转换——int转float
arr = np.array([1, 2, 3, 4, 5])
arr.dtype
# result:dtype('int32')
print(arr)
# result:[1 2 3 4 5]
float_arr = arr.astype(np.float64)
float_arr.dtype
# result:dtype('float64')
print(float_arr)
# result:[ 1.  2.  3.  4.  5.]
5.4数据类型转换——float转int

float转int结果不会四舍五入,只会直接去掉小数点后的部分

arr = np.array([3.7, -1.2, -2.6, 0.5, 12.9, 10.1])
arr.dtype
# result:dtype('float64')
print(arr)
# result:[  3.7  -1.2  -2.6   0.5  12.9  10.1]
int_arr = arr.astype(np.int32)
int_arr.dtype
# result:dtype('int32')
print(int_arr)
# result:array([ 3, -1, -2,  0, 12, 10])
5.5 数据类型转换——string转float
numeric_strings = np.array(['1.25', '-9.6', '42'], dtype=np.string_)
numeric_strings.dtype
# result: dtype('S4')
print(numeric_strings)
# result:[b'1.25' b'-9.6' b'42']
float_arr = numeric_strings.astype(float)
float_arr.dtype
# result:dtype('float64')
print(float_arr)
# result:[ 1.25 -9.6  42.  ]
5.6 字符编码
print(np.arange(7, dtype='f'))
# result:[ 0.  1.  2.  3.  4.  5.  6.]
print(np.arange(7, dtype='d'))
# result:[ 0.  1.  2.  3.  4.  5.  6.]
print(np.arange(7, dtype='D'))
# result:[ 0.+0.j  1.+0.j  2.+0.j  3.+0.j  4.+0.j  5.+0.j  6.+0.j]
print(np.dtype(float))
# result:float64
print(np.dtype('f'))
# result:float32
print(np.dtype('d'))
# result:float64
print(np.dtype('D'))
# result:complex128
print(np.dtype('f8'))
# result:float64
print(np.dtype('float64'))
# result:float64
5.7 创建自定义数据类型
t = np.dtype([('name', np.str_, 40), ('numitems', np.int32), ('price', np.float32)])
print(t)
# result:[('name', '<U40'), ('numitems', '<i4'), ('price', '<f4')]
print(t['name'])
# result:<U40
itemz = np.array([('Meaning of life DVD', 42, 3.14), ('Butter', 13, 2.72)], dtype=t)
print(itemz[1])
# result:('Butter', 13, 2.72)

6 numpy数组的运算

arr9 = np.array([[2,1],[1,2]])
arr10 = np.array([[1,2],[3,4]])
print(arr9 - arr10)
# result:
# [[ 1 -1]
#  [-2 -2]]
print(arr9**2)
# result:
# [[4 1]
#  [1 4]]
print(3*arr10)
# result:
# [[ 3  6]
#  [ 9 12]]
print(arr9*arr10)  #普通乘法
# result:
# [[2 2]
#  [3 8]]
print(np.dot(arr9,arr10))  #矩阵乘法(积)
# result:
# [[ 5  8]
#  [ 7 10]]
print(arr10.T)  #矩阵转置
# result:
# [[1 3]
#  [2 4]]
print(np.linalg.inv(arr10)) #返回逆矩阵
# result:
# [[-2.   1. ]
#  [ 1.5 -0.5]]
print(arr10.sum())  #数组元素求和
# result: 10
print(arr10.max())  #返回数组最大元素
# result: 4
print(arr10.cumsum(axis = 1))  #沿行累计总和
# result:
# [[1 3]
#  [3 7]]

矩阵乘法(积):矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义

Python中的Numpy最详细代码实例笔记
clipboard.png

逆矩阵:设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=E(E为单位矩阵)。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。

单位矩阵:在矩阵的乘法中,有一种矩阵起着特殊的作用,如同数的乘法中的1,这种矩阵被称为单位矩阵。它是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为1。除此以外全都为0。

7 数组的索引与切片

7.1 一维数组的索引与切片
a = np.arange(9)
print(a)
# result:[0 1 2 3 4 5 6 7 8]
print(a[3:7])
# result:[3 4 5 6]
print(a[:7:2])
# result:[0 2 4 6]
print(a[::-1])
# result:[8 7 6 5 4 3 2 1 0]
s = slice(3, 7, 2)
print(a[s])
# result:[3 5]
s = slice(None, None, -1)
print(a[s])
# result:[8 7 6 5 4 3 2 1 0]
7.2 多维数组的索引与切片
b = np.arange(24).reshape(2, 3, 4)
print(b)
# result:
# [[[ 0  1  2  3]
#   [ 4  5  6  7]
#   [ 8  9 10 11]]
#  [[12 13 14 15]
#   [16 17 18 19]
#   [20 21 22 23]]]

print(b.shape)
# result: (2, 3, 4)
print(b[0, 0, 0])
# result: 0
print(b[:, 0, 0])
# result: [ 0 12]
print(b[0])
# result:
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]
print(b[0, :, :])
# result:
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]
print(b[0, ...])
# result:
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]
print(b[0, 1])
# result: [4 5 6 7]
print(b[0, 1, ::2])
# result: [4 6]
print(b[..., 1])
# result:
# [[ 1  5  9]
#  [13 17 21]]
print(b[:, 1])
# result:
# [[ 4  5  6  7]
#  [16 17 18 19]]
print(b[0, :, 1])
# result: [1 5 9]
print(b[0, :, -1])
# result: [ 3  7 11]
print(b[0, ::-1, -1])
# result: [11  7  3]
print(b[0, ::2, -1])
# result: [ 3 11]
print(b[::-1])
# result:
# [[[12 13 14 15]
#   [16 17 18 19]
#   [20 21 22 23]]
#  [[ 0  1  2  3]
#   [ 4  5  6  7]
#   [ 8  9 10 11]]]
s = slice(None, None, -1)
print(b[(s, s, s)])
# result:
# [[[23 22 21 20]
#   [19 18 17 16]
#   [15 14 13 12]]
#  [[11 10  9  8]
#   [ 7  6  5  4]
#   [ 3  2  1  0]]]
7.3 布尔型索引
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
data = np.random.randn(7, 4)

names
# result: array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'], dtype='<U4')
data
# result:
# array([[-0.1361622 ,  0.98050442, -0.15336564, -0.48760426],
#        [-0.16386874, -0.34817134,  1.1479974 ,  0.70937066],
#        [-1.28186917, -0.48926723,  0.50318499,  0.50662251],
#        [-0.4856206 ,  0.03109503,  0.68854417,  0.14022486],
#        [ 0.00771609,  0.12883784, -1.39586023, -0.10152562],
#        [ 0.60160016, -0.66399474,  1.20907536,  0.95262856],
#        [-1.86564241, -0.59888113, -1.23990637,  0.18873638]])

names == 'Bob'
# result: array([ True, False, False,  True, False, False, False])
data[names == 'Bob']
# result:
# array([[-0.1361622 ,  0.98050442, -0.15336564, -0.48760426],
#        [-0.4856206 ,  0.03109503,  0.68854417,  0.14022486]])
data[names == 'Bob', 2:]
# result:
# array([[-0.15336564, -0.48760426],
#        [ 0.68854417,  0.14022486]])
data[names == 'Bob', 3]
# result: array([-0.48760426,  0.14022486])
names != 'Bob'
# result: array([False,  True,  True, False,  True,  True,  True])
data[~(names == 'Bob')]
# result:
# array([[-0.16386874, -0.34817134,  1.1479974 ,  0.70937066],
#        [-1.28186917, -0.48926723,  0.50318499,  0.50662251],
#        [ 0.00771609,  0.12883784, -1.39586023, -0.10152562],
#        [ 0.60160016, -0.66399474,  1.20907536,  0.95262856],
#        [-1.86564241, -0.59888113, -1.23990637,  0.18873638]])
mask = (names == 'Bob') | (names == 'Will')
mask
# result: array([ True, False,  True,  True,  True, False, False])
data[mask]
# result:
# array([[-0.1361622 ,  0.98050442, -0.15336564, -0.48760426],
#        [-1.28186917, -0.48926723,  0.50318499,  0.50662251],
#        [-0.4856206 ,  0.03109503,  0.68854417,  0.14022486],
#        [ 0.00771609,  0.12883784, -1.39586023, -0.10152562]])
data[data < 0] = 0
data
# result:
# array([[0.        , 0.98050442, 0.        , 0.        ],
#        [0.        , 0.        , 1.1479974 , 0.70937066],
#        [0.        , 0.        , 0.50318499, 0.50662251],
#        [0.        , 0.03109503, 0.68854417, 0.14022486],
#        [0.00771609, 0.12883784, 0.        , 0.        ],
#        [0.60160016, 0.        , 1.20907536, 0.95262856],
#        [0.        , 0.        , 0.        , 0.18873638]])
data[names != 'Joe'] = 7
data
# result:
# array([[7.        , 7.        , 7.        , 7.        ],
#        [0.        , 0.        , 1.1479974 , 0.70937066],
#        [7.        , 7.        , 7.        , 7.        ],
#        [7.        , 7.        , 7.        , 7.        ],
#        [7.        , 7.        , 7.        , 7.        ],
#        [0.60160016, 0.        , 1.20907536, 0.95262856],
#        [0.        , 0.        , 0.        , 0.18873638]])
7.4 花式索引
arr = np.empty((8, 4))
for i in range(8):
    arr[i] = i
arr
# result:
# array([[0., 0., 0., 0.],
#        [1., 1., 1., 1.],
#        [2., 2., 2., 2.],
#        [3., 3., 3., 3.],
#        [4., 4., 4., 4.],
#        [5., 5., 5., 5.],
#        [6., 6., 6., 6.],
#        [7., 7., 7., 7.]])
arr[[4, 3, 0, 6]]
# result:
# array([[4., 4., 4., 4.],
#        [3., 3., 3., 3.],
#        [0., 0., 0., 0.],
#        [6., 6., 6., 6.]])
arr[[-3, -5, -7]]
# result:
# array([[5., 5., 5., 5.],
#        [3., 3., 3., 3.],
#        [1., 1., 1., 1.]])
arr = np.arange(32).reshape((8, 4))
arr
# result:
# 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],
#        [24, 25, 26, 27],
#        [28, 29, 30, 31]])
arr[[1, 5, 7, 2], [0, 3, 1, 2]]
# result: array([ 4, 23, 29, 10])
arr[[1, 5, 7, 2]][:, [0, 3, 1, 2]]
# result:
# array([[ 4,  7,  5,  6],
#        [20, 23, 21, 22],
#        [28, 31, 29, 30],
#        [ 8, 11,  9, 10]])
arr[np.ix_([1, 5, 7, 2], [0, 3, 1, 2])]
# result:
# array([[ 4,  7,  5,  6],
#        [20, 23, 21, 22],
#        [28, 31, 29, 30],
#        [ 8, 11,  9, 10]])

8 改变数组的维度

b = np.arange(24).reshape(2, 3, 4)
print(b)
# result:
# [[[ 0  1  2  3]
#   [ 4  5  6  7]
#   [ 8  9 10 11]]
#  [[12 13 14 15]
#   [16 17 18 19]
#   [20 21 22 23]]]
print(b.ravel())
# result: [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
print(b.flatten())
# result: [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]

b.shape = (6, 4)
print(b)
# result:
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]
#  [16 17 18 19]
#  [20 21 22 23]]
print(b.transpose())
# result:
# [[ 0  4  8 12 16 20]
#  [ 1  5  9 13 17 21]
#  [ 2  6 10 14 18 22]
#  [ 3  7 11 15 19 23]]
b.resize((2, 12))
print(b)
# result:
# [[ 0  1  2  3  4  5  6  7  8  9 10 11]
#  [12 13 14 15 16 17 18 19 20 21 22 23]]

9 数组的合并

a = np.arange(9).reshape(3, 3)
print(a)
# result:
# [[0 1 2]
#  [3 4 5]
#  [6 7 8]]
b = 2 * a
print(b)
# result:
# [[ 0  2  4]
#  [ 6  8 10]
#  [12 14 16]]

print(np.vstack((a, b))) #纵向合并数组,由于与堆栈类似,故命名为vstack
# result:
# [[ 0  1  2]
#  [ 3  4  5]
#  [ 6  7  8]
#  [ 0  2  4]
#  [ 6  8 10]
#  [12 14 16]]
print(np.concatenate((a, b), axis=0))
# result:
# [[ 0  1  2]
#  [ 3  4  5]
#  [ 6  7  8]
#  [ 0  2  4]
#  [ 6  8 10]
#  [12 14 16]]
print(np.hstack((a, b))) #横向合并数组
# result:
# [[ 0  1  2  0  2  4]
#  [ 3  4  5  6  8 10]
#  [ 6  7  8 12 14 16]]
print(np.concatenate((a, b), axis=1))
# result:
# [[ 0  1  2  0  2  4]
#  [ 3  4  5  6  8 10]
#  [ 6  7  8 12 14 16]]

print(np.dstack((a, b)))
# result:
# [[[ 0  0]
#   [ 1  2]
#   [ 2  4]]
#  [[ 3  6]
#   [ 4  8]
#   [ 5 10]]
#  [[ 6 12]
#   [ 7 14]
#   [ 8 16]]]
oned = np.arange(2)
print(oned)
# result: [0 1]
twice_oned = 2 * oned
print(twice_oned)
# result: [0 2]
print(np.column_stack((oned, twice_oned)))
# result:
# [[0 0]
#  [1 2]]
print(np.column_stack((a, b)))
# result:
# [[ 0  1  2  0  2  4]
#  [ 3  4  5  6  8 10]
#  [ 6  7  8 12 14 16]]
print(np.column_stack((a, b)) == np.hstack((a, b)))
# result:
# [[ True  True  True  True  True  True]
#  [ True  True  True  True  True  True]
#  [ True  True  True  True  True  True]]
print(np.row_stack((oned, twice_oned)))
# result:
# [[0 1]
#  [0 2]]
print(np.row_stack((a, b)))
# result:
# [[ 0  1  2]
#  [ 3  4  5]
#  [ 6  7  8]
#  [ 0  2  4]
#  [ 6  8 10]
#  [12 14 16]]
print(np.row_stack((a, b)) == np.vstack((a, b)))
# result:
# [[ True  True  True]
#  [ True  True  True]
#  [ True  True  True]
#  [ True  True  True]
#  [ True  True  True]
#  [ True  True  True]]

10 数组的分割

a = np.arange(9).reshape(3, 3)
print(a)
# result:
# [[0 1 2]
#  [3 4 5]
#  [6 7 8]]

print(np.hsplit(a, 3)) # 将数组横向分为2部分
# result:
# [array([[0],
#        [3],
#        [6]]),
#  array([[1],
#        [4],
#        [7]]),
#  array([[2],
#        [5],
#        [8]])]
print(np.split(a, 3, axis=1))
# result:
# [array([[0],
#        [3],
#        [6]]),
#  array([[1],
#        [4],
#        [7]]),
#  array([[2],
#        [5],
#        [8]])]
print(np.vsplit(a, 3)) # 数组纵向分为2部分
# result: [array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
print(np.split(a, 3, axis=0))
# result: [array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
c = np.arange(27).reshape(3, 3, 3)
print(c)
# result:
# [[[ 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]]]
print(np.dsplit(c, 3))
# result:
# [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]]])]

11 数组的转换

b = np.array([1. + 1.j, 3. + 2.j])
print(b)
# result: [1.+1.j 3.+2.j]
print(b.tolist())
# result: [(1+1j), (3+2j)]
print(b.tostring())
# result: b'x00x00x00x00x00x00xf0?x00x00x00x00x00x00xf0?x00x00x00x00x00x00x08@x00x00x00x00x00x00x00@'
print(np.fromstring(b'x00x00x00x00x00x00xf0?x00x00x00x00x00x00xf0?x00x00x00x00x00x00x08@x00x00x00x00x00x00x00@', dtype=complex))
# result: [1.+1.j 3.+2.j]
print(np.fromstring('20:42:52', sep=':', dtype=int))
# result: [20 42 52]
print(b.astype(int))
# result: [1 3]
# <string>:1: ComplexWarning: Casting complex values to real discards the imaginary part
print(b.astype('complex'))
# result: [1.+1.j 3.+2.j]

您必须 登录 才能发表评论!