numpy学习与使用2

延续上一节,依旧是numpy基本的一些语法及其使用方法,可能存在一些重复的东西,就当做练习了。运行环境python2.7

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import numpy as np

a = np.array([[2, 3, 4], [4, 5, 6]], dtype=int)
# [[2 3 4]
#  [4 5 6]]
print "矩阵a:\n", a
# a的形状  (2L, 3L)
print "a的形状:\n", a.shape
# a的大小  6
print "a的大小:\n", a.size
# a的维度  2
print "a的维度:\n", a.ndim
# a的数据类型  int32
print "a的类型:\n", a.dtype

# reshape改变形状,其中形状用()或者[],-1代表待定
a = a.reshape([3, 2])
print "矩阵a:\n", a
a = a.reshape((6, -1))
print "矩阵a:\n", a

# np.arange函数和range函数作用相同,但是range需要转换成array
# 两种方法不同之处:arrange生成的为[0 1 2 3 4],range生成的为[0, 1, 2, 3, 4]
a = np.arange(5)
print "arrange生成矩阵a:\n",    a  # [0 1 2 3 4]
print "arrange生成矩阵a:", type(a)      # <type 'numpy.ndarray'>

b = range(0, 5)
b1 = np.array(range(0, 5))
print "range生成矩阵b:\n", b    # [0, 1, 2, 3, 4]
print "range生成矩阵b:", type(b)    # <type 'list'>
print "range生成矩阵b1:\n", b1      # [0 1 2 3 4]
print "range生成矩阵b1:", type(b1)      # <type 'numpy.ndarray'>

# start,stop,step 区间[ ),左毕右开
c = np.arange(1, 6, 2)      # [1 3 5]
print "从1-6生成矩阵c,间隔为2:\n", c

# linespce 等分数列  start,stop,step 区间[ ],左毕右毕
d = np.linspace(1, 6, 5)    # [1.   2.25 3.5  4.75 6.  ]
print "从1-6生成矩阵d,等分为5份:\n", d

# logspace 等比数列  start,stop,step 区间[ ],左毕右毕,底数为10
e = np.logspace(1, 5, 5)    # [1.e+01 1.e+02 1.e+03 1.e+04 1.e+05]
print "生成等比数列e:\n", e

# random.rand 随机生成
a = np.random.rand(10)
print "随机生成10个[0-1]的矩阵a:\n", a
print a.shape       # (10L,) 维度:一维

# 打印随机生成大于0.5的数值,返回布尔值类型
print "打印随机生成矩阵a中大于0.5的数值,返回布尔值类型:\n", a > 0.5
# [ True  True  True False False False  True False False False]

# 将a中大于0.5的值赋值给b
b = a[a > 0.5]      # [0.74674445 0.79098711 0.68312029 0.73077262]
print "将a中大于0.5的值赋值给b:\n", b

# 将原数组中大于0.5的元素截取成0.5
a[a > 0.5] = 0.5
print "将原数组中大于0.5的元素截取成0.5:\n", a
# b不受影响
print "b不受影响:\n", b

# random.rand 随机生成2行3列的矩阵
x, y = np.random.rand(2, 3)
print "第一行矩阵x:\n", x
print "第二行矩阵y:\n", y

# 生成0-59的数组 --> 6行的二维数组
a = np.arange(60).reshape((6, -1))
print "矩阵a:\n", a

# 生成0-59的数组,间隔为10 arange(start,stop,step) 取值范围[ ) 左闭右开
b = np.arange(0, 60, 10)    # [ 0 10 20 30 40 50]
print "矩阵b:\n", b

# 打印矩阵a中(0,2)(1,3)(2,4)
print "打印矩阵a中(0,2),(1,3),(2,4):\n", a[[0, 1, 2], [2, 3, 4]]
# 打印矩阵a中(4,2)(4,3)(4,4)
print "打印矩阵a中(4,2)(4,3)(4,4):\n", (a[4, [2, 3, 4]])
# 打印矩阵a中(4,2)(4,3)(4,4)(5,2)(5,3)(5,4)
print "打印矩阵a中(4,2)(4,3)(4,4)(5,2)(5,3)(5,4):\n", (a[4:, [2, 3, 4]])

# Ture为1,False为0
i = np.array([True, False, True, False, False, True])
# 打印矩阵a中的第一行、第三行、第六行
print "打印矩阵a中的第一行、第三行、第六行:\n", a[i]
# 打印矩阵a(0,3)(2,3)(5,3)
print "打印矩阵a(0,3)(2,3)(5,3):\n", a[i, 3]

a = np.array([10, 20, 30, 40])      # a = [10 20 30 40]
b = np.arange(4)    # b = [0 1 2 3]
print "a:", a               # a = [10 20 30 40]
print"b:", b                # b = [0 1 2 3]
print "a + b:", a + b       # a + b:[10 21 32 43]
print "a - b:", a - b       # a - b: [10 19 28 37]
print "a * b:", a * b       # a * b: [  0  20  60 120]
print "a ** 2:", a ** 2     # a ** 2: [ 100  400  900 1600]
print "max(a):", np.max(a)  # max(a): 40
print "min(a):", np.min(a)  # min(a): 10
print "sum(a):", np.sum(a)  # sum(a): 100

# 返回布尔类型的array [False False  True  True]
print a > 20     # [False False  True  True]
print a[a > 20]  # [30 40]

c = np.array([[1, 2], [1, 1]])
d = np.arange(4).reshape((2, 2))
print "c:\n", c
print "d:\n", d
print "c * d:\n", c * d
print "矩阵相乘:\n", np.dot(c, d)
# axis=0表示列,axis=1表示行
print "矩阵d中每行最大的:\n", np.max(d, axis=1)

A = np.arange(12).reshape((3, 4))
print "矩阵A:\n", A
# 最小值的索引
print "最小值的索引:\n", np.argmin(A)
# 最大值的索引
print "最大值的索引:\n", np.argmax(A)
# 计算矩阵的平均值
print "计算矩阵的平均值方法1:\n", np.mean(A)
print "计算矩阵的平均值方法2\n", A.mean()
print "计算矩阵的平均值方法3\n", np.average(A)
# 计算矩阵的中位数
print "计算矩阵的中位数:\n", np.median(A)
# 逐步的加列表
print "逐步的加列表:\n", np.cumsum(A)
# 列表每两个数的差
print "列表每两个数的差:\n", np.diff(A)
# 找出非零的数
print "找出非零的数:\n", np.nonzero(A)
# 进行排序
print "进行排序:\n", np.sort(A)
# 对矩阵进行转置
print "矩阵转置方法1:\n", A.T
print "矩阵转置方法2:\n", np.transpose(A)
# clip :<3的数变成3,>9的数变成9
print "clip :小于3的数变成3,大于9的数变成9:\n", np.clip(A, 3, 9)
# 计算每一行的平均值
print "每一行的平均值:\n", np.mean(A, axis=1)
print "每一列的平均值:\n", np.mean(A, axis=0)

A = np.arange(12).reshape((3, 4))
print "矩阵A:\n", A
print "矩阵第三行第二列(2,1)的值:\n", A[2, 1]
print "矩阵第三行第二列(2,1)的值:\n", A[2][1]
print "矩阵第二行开始,第三列开始(1:,2:)的值:\n", A[1:, 2:]

# 打印出每一行
print "打印出每一行"
for row in A:
    print row

# 打印出每一列
print "打印出每一列"
for column in A.T:
    print column

# 打印出每一个数字
print "打印出每一个数字"
# flat是一个数组元素迭代器
for item in A.flat:
    print item

a = np.array([1, 1, 1], dtype=int)
b = np.array([2, 2, 2], dtype=int)
print "矩阵a:\n", a
print "矩阵b:\n", b

# 矩阵上下合并
print "矩阵a和b上下合并:\n", np.vstack((a, b))

# 矩阵左右合并
print "矩阵a和b左右合并:\n", np.hstack((a, b))

c = a.reshape((3, - 1))
d = b.reshape((3, -1))
print "矩阵c:\n", c
print "矩阵d:\n", d
print "矩阵c和d上下合并:\n", np.vstack((c, d))
print "矩阵c和d左右合并:\n", np.hstack((c, d))

# 多个矩阵的合并
e = np.concatenate((a, b), axis=0)
print "矩阵a和b左右合并:\n", e

a = np.arange(12).reshape((3, 4))
print "矩阵a:\n", a

print "矩阵a分成左右两个矩阵:\n", np.split(a, 2, axis=1)
print "矩阵a分成上下三个矩阵:\n", np.split(a, 3, axis=0)

print "矩阵a分成上下三个矩阵:\n", np.vsplit(a, 3)
print "矩阵a分成左右两个矩阵:\n", np.hsplit(a, 2)

a = np.arange(4, dtype=float)
b = a
c = a
d = b
a[2] = 0.2
print "矩阵a:\n", a
print "矩阵b:\n", b
print "b is a:\n", b is a
print "b == a:\n", b == a
print "d is a:\n", d is a

d[1:3] = [11, 22]
print "矩阵d:\n", d

# 深拷贝,只是把a的值赋值给e,但是a和e没有关联关系,改变a不会改变e
e = a.copy()
print "矩阵e:\n", e
print "e is a:\n", e is a

以下是上述代码的运行结果

D:\software\Anaconda2\python.exe D:/PycharmProjects/Learn/learn_numpy/learn_np2.py
矩阵a:
[[2 3 4]
 [4 5 6]]
a的形状:
(2L, 3L)
a的大小:
6
a的维度:
2
a的类型:
int32
矩阵a:
[[2 3]
 [4 4]
 [5 6]]
矩阵a:
[[2]
 [3]
 [4]
 [4]
 [5]
 [6]]
arrange生成矩阵a:
[0 1 2 3 4]
arrange生成矩阵a: <type 'numpy.ndarray'>
range生成矩阵b:
[0, 1, 2, 3, 4]
range生成矩阵b: <type 'list'>
range生成矩阵b1:
[0 1 2 3 4]
range生成矩阵b1: <type 'numpy.ndarray'>
从1-6生成矩阵c,间隔为2:
[1 3 5]
从1-6生成矩阵d,等分为5份:
[1.   2.25 3.5  4.75 6.  ]
生成等比数列e:
[1.e+01 1.e+02 1.e+03 1.e+04 1.e+05]
随机生成10个[0-1]的矩阵a:
[0.63104957 0.05009521 0.30463692 0.13916    0.3591391  0.60050412
 0.69723732 0.70830411 0.47545421 0.23032564]
(10L,)
打印随机生成矩阵a中大于0.5的数值,返回布尔值类型:
[ True False False False False  True  True  True False False]
将a中大于0.5的值赋值给b:
[0.63104957 0.60050412 0.69723732 0.70830411]
将原数组中大于0.5的元素截取成0.5:
[0.5        0.05009521 0.30463692 0.13916    0.3591391  0.5
 0.5        0.5        0.47545421 0.23032564]
b不受影响:
[0.63104957 0.60050412 0.69723732 0.70830411]
第一行矩阵x:
[0.77935029 0.33747606 0.83005824]
第二行矩阵y:
[0.57970496 0.63258212 0.75846117]
矩阵a:
[[ 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 32 33 34 35 36 37 38 39]
 [40 41 42 43 44 45 46 47 48 49]
 [50 51 52 53 54 55 56 57 58 59]]
矩阵b:
[ 0 10 20 30 40 50]
打印矩阵a中(0,2),(1,3),(2,4):
[ 2 13 24]
打印矩阵a中(4,2)(4,3)(4,4):
[42 43 44]
打印矩阵a中(4,2)(4,3)(4,4)(5,2)(5,3)(5,4):
[[42 43 44]
 [52 53 54]]
打印矩阵a中的第一行、第三行、第六行:
[[ 0  1  2  3  4  5  6  7  8  9]
 [20 21 22 23 24 25 26 27 28 29]
 [50 51 52 53 54 55 56 57 58 59]]
打印矩阵a(0,3)(2,3)(5,3):
[ 3 23 53]
a: [10 20 30 40]
b: [0 1 2 3]
a + b: [10 21 32 43]
a - b: [10 19 28 37]
a * b: [  0  20  60 120]
a ** 2: [ 100  400  900 1600]
max(a): 40
min(a): 10
sum(a): 100
[False False  True  True]
[30 40]
c:
[[1 2]
 [1 1]]
d:
[[0 1]
 [2 3]]
c * d:
[[0 2]
 [2 3]]
矩阵相乘:
[[4 7]
 [2 4]]
矩阵d中每行最大的:
[1 3]
矩阵A:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
最小值的索引:
0
最大值的索引:
11
计算矩阵的平均值方法1:
5.5
计算矩阵的平均值方法2
5.5
计算矩阵的平均值方法3
5.5
计算矩阵的中位数:
5.5
逐步的加列表:
[ 0  1  3  6 10 15 21 28 36 45 55 66]
列表每两个数的差:
[[1 1 1]
 [1 1 1]
 [1 1 1]]
找出非零的数:
(array([0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
进行排序:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
矩阵转置方法1:
[[ 0  4  8]
 [ 1  5  9]
 [ 2  6 10]
 [ 3  7 11]]
矩阵转置方法2:
[[ 0  4  8]
 [ 1  5  9]
 [ 2  6 10]
 [ 3  7 11]]
clip :小于3的数变成3,大于9的数变成9:
[[3 3 3 3]
 [4 5 6 7]
 [8 9 9 9]]
每一行的平均值:
[1.5 5.5 9.5]
每一列的平均值:
[4. 5. 6. 7.]
矩阵A:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
矩阵第三行第二列(2,1)的值:
9
矩阵第三行第二列(2,1)的值:
9
矩阵第二行开始,第三列开始(1:,2:)的值:
[[ 6  7]
 [10 11]]
打印出每一行
[0 1 2 3]
[4 5 6 7]
[ 8  9 10 11]
打印出每一列
[0 4 8]
[1 5 9]
[ 2  6 10]
[ 3  7 11]
打印出每一个数字
0
1
2
3
4
5
6
7
8
9
10
11
矩阵a:
[1 1 1]
矩阵b:
[2 2 2]
矩阵a和b上下合并:
[[1 1 1]
 [2 2 2]]
矩阵a和b左右合并:
[1 1 1 2 2 2]
矩阵c:
[[1]
 [1]
 [1]]
矩阵d:
[[2]
 [2]
 [2]]
矩阵c和d上下合并:
[[1]
 [1]
 [1]
 [2]
 [2]
 [2]]
矩阵c和d左右合并:
[[1 2]
 [1 2]
 [1 2]]
矩阵a和b左右合并:
[1 1 1 2 2 2]
矩阵a:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
矩阵a分成左右两个矩阵:
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]
矩阵a分成上下三个矩阵:
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
矩阵a分成上下三个矩阵:
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
矩阵a分成左右两个矩阵:
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]
矩阵a:
[0.  1.  0.2 3. ]
矩阵b:
[0.  1.  0.2 3. ]
b is a:
True
b == a:
[ True  True  True  True]
d is a:
True
矩阵d:
[ 0. 11. 22.  3.]
矩阵e:
[ 0. 11. 22.  3.]
e is a:
False

Process finished with exit code 0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值