索引

    • NumPy官方文档
    • Quickstart
        • 基本对象–nArray
        • 创建Array的几种方式
        • 打印Array
        • 基本操作
        • 基本函数
        • 索引、切片、循环

NumPy官方文档

  • 官方网站:https://numpy.org/

Quickstart

基本对象–nArray

import numpy as np
a = np.arange(15).reshape(3, 5)
print("对象",a.data)
print("对象类型",type(a))
print("对象数据:",a)
print("维度:",a.ndim)
print("元素类型:",a.dtype.name)
print("元素长度:",a.itemsize)
print("数组大小:",a.size)

创建Array的几种方式

import numpy as np
# 创建方式1:直接输入数组
a = np.array((1.5,2,3))# 一维数组
b = np.array([(1.5,2,3), (4,5,6)]) # 多维数组
c = np.array( [ [1,2], [3,4] ], dtype=complex ) # 限定元素类型

# 创建方式2:从a到b间隔为c
np.arange( 10, 30, 5 ) # array([10, 15, 20, 25]) 

# 创建方式3:从a到b的n个数
np.linspace( 0, 2, 9 ) # 从0到2的9个数
x = np.linspace( 0, 2*pi, 100 ) # 可应用于在多个点上对函数求值
f = np.sin(x) # sin函数作用于x的每个元素得到新的数组

打印Array

a = np.arange(6)                  # 1d array
print(a)
b = np.arange(12).reshape(4,3)    # 2d array
print(b)
c = np.arange(24).reshape(2,3,4)  # 3d array
print(c)
# 当数组过长时,默认打印部分
print(np.arange(10000))
print(np.arange(10000).reshape(100,100))
# 通过一下方式修改最大打印长度
import sys
np.set_printoptions(threshold=sys.maxsize)

基本操作

'''基本操作'''
import numpy as np
a = np.array( [20,30,40,50] ) # [20 30 40 50]
b = np.arange( 4 ) # [0 1 2 3]
c = a-b # [20 29 38 47]
print(b**2) # [0 1 4 9]
print(10*np.sin(a)) # [0.91294525 -0.98803162 0.74511316 -0.26237485]
print(a<35) # [True True False False]

'''矩阵乘法&矩阵积'''
import numpy as np
A = np.array( [[1,1],[0,1]] )
B = np.array( [[2,0],[3,4]] )
print(A * B)                       # elementwise product:array([[2, 0],[0, 4]])
print(A @ B)                       # matrix product矩阵积:array([[5, 4],[3, 4]])
print(A.dot(B))                    # another matrix product矩阵积:array([[5, 4],[3, 4]])

'''数乘&加减'''
import numpy as np
a = np.ones((2,3), dtype=int) # 元素为整数1
rg = np.random.default_rng(1)     # create instance of default random number generator
b = rg.random((2,3)) # 元素为0-1随机浮点数
a *= 3  # 所有元素×3
b += a  # 对应位置元素相加,b浮点型兼容a整型
a += b  # 错误:b浮点型无法自动转化为a整型

'''高精度兼容低精度'''
import numpy as np
a = np.ones(3, dtype=np.int32)
b = np.linspace(0,np.pi,3)
print(b.dtype.name) # float64
c = a+b # [1. 2.57079633 4.14159265]
print(c.dtype.name) # float64
d = np.exp(c*1j) # [ 0.54030231+0.84147098j -0.84147098+0.54030231j -0.54030231-0.84147098j]
print(d.dtype.name) # complex128

基本函数

'''基本一元运算函数'''
import numpy as np
rg = np.random.default_rng(1)
a = rg.random((1,3))
print(a) # [[0.51182162 0.9504637 0.14415961]]
print(a.sum()) # 1.6064449337458258
print(a.min()) # 0.14415961271963373
print(a.max()) # 0.9504636963259353

'''限定一元运算函数'''
b = np.arange(12).reshape(3,4)
print(b)
print(b.sum(axis=0))                            # sum of each column
print(b.min(axis=1))                          # min of each row
print(b.cumsum(axis=1))                         # cumulative sum along each row

'''通用函数'''
import numpy as np
B = np.arange(3) # [0 1 2]
print(np.exp(B)) # [1. 2.71828183 7.3890561 ]
print(np.sqrt(B)) # [0. 1. 1.41421356]
C = np.array([2., -1., 4.])
print(np.add(B, C)) # [2. 0. 6.]
# 其他:all, any, apply_along_axis, argmax, argmin, argsort, average, bincount, ceil, clip, conj, corrcoef, cov, cross, cumprod, cumsum, diff, dot, floor, inner, invert, lexsort, max, maximum, mean, median, min, minimum, nonzero, outer, prod, re, round, sort, std, sum, trace, transpose, var, vdot, vectorize, where

索引、切片、循环

'''一维数组: 如同列表和其他Python序列一样'''
import numpy as np
a = np.arange(10)**3 # [ 0 1 8 27 64 125 216 343 512 729]
print(a[2]) # 8
print(a[2:5]) # [ 8 27 64]
a[:6:2] = 1000 # [1000 1 1000 27 1000 125 216 343 512 729]
print(a[ : :-1]) # [ 729 512 343 216 125 1000 27 1000 1 1000]
for i in a: # 遍历
    print(i**(1/3.))
    
'''二维:多维数组每个轴可以有一个索引。这些索引以元组给出,并用逗号分隔'''
def f(x,y):return 10*x+y # 创建行列为参数的函数
b = np.fromfunction(f,(5,4),dtype=int)
#array([[ 0, 1, 2, 3],
# [10, 11, 12, 13],
# [20, 21, 22, 23],
# [30, 31, 32, 33],
# [40, 41, 42, 43]])
print(b[2,3]) # 23
print(b[0:5, 1])# 每行的第二个元素:array([ 1, 11, 21, 31, 41])
print(b[ : ,1]) # 同上:array([ 1, 11, 21, 31, 41])
print(b[1:3, : ])# 每列的第二个元素、每列的第三个元素:array([[10, 11, 12, 13],[20, 21, 22, 23]])
print(b[-1]) # 倒数第一行Equivalent to b[-1,:]
'''如果选中单行或单列,索引结果展示为一维数组,若多行多列则按原来的位置关系呈现为多维数组'''

'''缩写'''
c = np.array( [[[  0,  1,  2],[ 10, 12, 13]],
               [[100,101,102],[110,112,113]]])
c.shape    # (2, 2, 3)
c[1,...]   # same as c[1,:,:] or c[1]
c[...,2]   # same as c[:,:,2]

'''迭代'''
# 相对第一个轴迭代
for row in b:
    print(row)
# 迭代所有元素
for element in b.flat:
    print(element)

本文地址:https://blog.csdn.net/qq_41960416/article/details/110821996