stack(), vstack(), hstack()
l stack():
import numpy as np
a=[[1,2,3],
[4,5,6]]
print("列表a如下:")
print(a)
c=np.stack(a,axis=0)
print(c)
c=np.stack(a,axis=1)
print(c)
>>>
列表a如下:
[[1, 2, 3], [4, 5, 6]]
[[1 2 3]
[4 5 6]]
[[1 4]
[2 5]
[3 6]]
l Hstack():
a=[1,2,3], b=[4,5,6]
print(np.hstack((a,b)))
[1 2 3 4 5 6]
l Vstack():
print(np.vstack((a,b)))
[[1 2 3]
[4 5 6]]
:或则 -1 的用法
b1=[[[0 1 2]
[ 3 4 5]]
[[ 6 7 8]
[ 9 10 11]]
[[12 13 14]
[15 16 17]]
[[18 19 20]
[21 22 23]]]
# 从最外层的维度分解出最后一个模块
b1[-1] =
[[18 19 20]
[21 22 23]]
# 写在最后一个维度的":"没有实质性作用,此处表示的意思和b1[-1]相同
b1[-1:]= b1[-1]
# 表示取出最外层的所有维度后每一个子模块中选择最后一个子模块
b1[:, -1]=
[[ 3 4 5]
[ 9 10 11]
[15 16 17]
[21 22 23]]
# 表示取最里层维度的最后一个元素重新组成新的元组
b1[:, :, -1]=
[[ 2 5]
[ 8 11]
[14 17]
[20 23]]
Sum()函数,mean()函数
c = [[0, 2, 1]
[3, 5, 6]
[0, 1, 1]]
print (c.mean())
print (c.mean(axis=0))
print (c.mean(axis=1))
2.11111111111
[ 1. 2.66666667 2.66666667]
[ 1. 4.66666667 0.66666667]
Tile()函数
tile英文单词意思:拼贴。tile(A, n)功能:将数组A重复n次,构成一个新的数组。
A的类型:array, list, tuple, dict, matrix,int, string, float,bool
n的类型: tuple,list, dict, array, antibook,不可以是float, string, matrix
np.tile(2, [3,3])
array([[2, 2, 2],
[2, 2, 2],
[2, 2, 2]])
argsort()方法
argsort(a):对数组或元组a进行升序排序, 返回的是升序之后的各个元素在原来a未升序之前的下标,即返回升序之后对应的下标数组
a = [2,-1,6,9,3,1]
#升序排列
print (np.argsort(a))
#降序排列,添加一个负号,并且a必须是array类型
print (np.argsort(-np.array(a)))
[1 5 0 4 2 3]
[3 2 4 0 5 1]
np.random
l np.random.rand(2,3) 生成0-1间的随机数
l np.random.randint(low,high,size),生成low到high间的整数
l np.random.random(size=[])生成0到1间的随机数,与np.random.rand()相同
l np.random.randn(2,4)生成均值为0,方差为1的标准正太分布
l np.random.choice()
numpy.random.choice(a, size=None, replace=True, p=None)
a:一维数组或者int型变量,如果是数组,就按照里面的范围来进行采样,如果是单个变量,则采用np.arange(a)的形式
size : int 或者 tuple of ints, 可选参数
决定了输出的shape. 如果给定的是, (m, n, k), 那么 m * n * k 个采样点将会被采样. 默认为零,也就是只有一个采样点会被采样回来。
replace : 布尔参数,可选参数 决定采样中是否有重复值
p :一维数组参数,可选参数
对应着a中每个采样点的概率分布,如果没有标出,则使用标准分布。
np.random.choice(5,size=(2,3),replace=True)
array([[4, 0, 4],
[2, 3, 4]])
revel()和flatten()
均是将多维降为1维
np.flatten()返回一份拷贝,对拷贝所做修改不会影响原始矩阵,而np.ravel()返回的是视图,修改时会影响原始矩阵
import numpy as np
x=np.array([[1,2],[3,4]])
# flattenh函数和ravel函数在降维时默认是行序优先
x.flatten()
x.ravel()
array ([1, 2, 3, 4])
# 传入'F'参数表示列序优先
x.flatten('F')
#reshape函数当参数只有一个-1时表示将数组降为一维
x.reshape(-1)
np.concatenate
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
np.concatenate((a, b), axis=0)
Out[25]:
array([ [1, 2],
[3, 4],
[5, 6]])
矩阵的广播
Arange(1,11) + arange(0,10)[ : np.newaxis]可以得到10x10 Hilbert matrix
array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
[ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
[ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
[ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
[ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
[ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
[ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
[ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17],
[ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]])