01 - numpyの

numpyの

入門

numpy.genfromtxt

numpyのは当然のことながら、多くの有用ながあり、行列を計算するように設計されて

import numpy
world_alcohol = numpy.genfromtxt("world_alcohol.txt", delimiter=",",dtype=str)

我々は、カンマで区切って指定された区切り文字を使用して、上記でファイルを読み込み、デフォルトのデータを指定numpy.genfromtxt使用(STRを使用して通常である)STRストレージを使用読み取り
numpy.genfromtxt使用
結果は、上記印刷に見ることができますデータはnumpyのは、このタイプに格納されたデータのタイプである、world_alcohol型numpy.ndarrayに格納されていることを
上記の内容プリントアウト、実際に対応する行と列のマトリックスであります

numpy.array

numpyのの真ん中では、物事の核心はnumpy.arrayです

vector = numpy.array([5, 10, 15, 20])
matrix = numpy.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])

使用numpy.arrayとしては2次元である場合、直接リストに配置することができ、それは一次元である場合、マトリックスを構築することができる、対応する2つのブラケットを順次押し戻さ続きます図に示すように。
numpy.array使用

。形状

日常生活では、多くのを使用してマトリクス状メソッドを使用することで、あなたは直接(各行と列が何である)行列の構造が似ている見ることができます
使用の形状

DTYPE

中央Pythonのリストを学習するとき、私たちは知っている、このリストの途中で、異なるタイプの値で渡されますが、numpy.array時に、値が同じ型の値の中間に渡す必要があります
DTYPE
上記numpy.arrayの使用着信コンテンツは、[1,2,3,4]、あなたは、私たちは4の真ん中になります場合は4.0、その後、データタイプint64型を見ることができ、ディスプレイ上DTYPEを使用し、データは整数で見ることができていますそれは次のような状況は以下のようになり
ここに画像を挿入説明
、浮動小数点データとなり、4の中央値では、単に変更、全体のデータ型が変更された、見ることができ、同様に、我々はデータ型の真ん中を変更し、他のタイプのデータが発生します変更

データセレクター

python的list中间,在进行取数据的时候,通常都是通过索引去取的,在numpy中间也是一样的(通过索引获取数据)
データ収集
除了如上面所示获取单个数据以外,其实我们也是可以和list中间一样,获取一个数据的切片的
データスライス
上面操作的对象是一个一维的数据,如果是二维的数据呢?此时我们想取中间的某一列的数据
データスライス
如上,对于这个矩阵,就将中间第二列的数据取出来了

判断矩阵中的数据

如果给定了一个矩阵,如果想要获取到该矩阵中间是否有与指定的值相等的值,可以使用下面的方式
ここに画像を挿入説明
返回的结果要么是True,要么是False,可以看到,第二个对应的是True,说明第二个数是等于10的(返回的类型是一个bool类型)
ここに画像を挿入説明
同样,对于二维的矩阵也是一样适用的
在上面,我们获取到了bool类型的数据,如果我们想将中间的内容打印出来呢?
ここに画像を挿入説明
ここに画像を挿入説明

‘与’ 与 ‘或’判断

‘与’ 运算
ここに画像を挿入説明
上面进行的是‘与’运算,在这个运算中,中间使用一个 & 符号进行连接,可以看到最后输出的内容都是False

‘或’ 运算
ここに画像を挿入説明
可以看到,执行或运算的时候,前面的两个值变为了True

arange与reshape

我们可以使用arange创造出一个向量,之后使用reshape将其转换为一个矩阵
ここに画像を挿入説明
如上,使用arange创造出了0到14的一个向量,之后使用reshape将其转换为3行5列的一个矩阵
这里arange除了上面的这种操作之外,还存在下面这样的方式
ここに画像を挿入説明
这里表示的就是从10开始,到30结束,步长为5;这里是小于30,但是不能等于30

在上面使用reshape的时候,指定了行和列,其实并不需要将行和列都写上,可以仅仅写上一个行数就行了
ここに画像を挿入説明
上面reshape的时候,指定了行是6,列写的为-1(自动计算)

shape与ndim

使用shape可以看一个矩阵的全貌(几行几列),通过ndim可以看到这个矩阵是几维度的
ここに画像を挿入説明
在上面的截图中,可以看到a这个矩阵是3行5列的,同时a这个矩阵是2个维度的

dtype.name与size

ここに画像を挿入説明
使用dtype.name可以获取a这个矩阵中间存储的数据类型是int类型的;使用size可以看到a这个矩阵中间的数据量

zeros

可以使用zeros初始化一个全部为0的矩阵
ここに画像を挿入説明

ones

使用ones初始化一个全部为1的矩阵
ここに画像を挿入説明

random

在numpy中间random这个模块比较重要,这是一个随机模块
ここに画像を挿入説明
在random中间的2,3表示的是2行3列的矩阵,这里的值的取值范围是从-1到+1之间的值

linspace

ここに画像を挿入説明
这里首先从numpy中间import了pi,下面使用linspace进行取值,意思为从0到2pi之间平均取100个值

矩阵运算

ここに画像を挿入説明
首先使用numpy的array创建了一个向量,同时使用arange创建了一样维度的向量,之后使用a向量减去b向量,这样得到的一个结果,可以看到,减的时候是逐个进行减的。同样还有平方和判断

dot

ここに画像を挿入説明
上面例子中,进行了乘法的运算,但是前后两种方式并不相同,一种是简单的AB,这样表示的内容是对应位置的相乘;第二种使用了dot,这样乘法就是矩阵的乘法,第一行乘以第一列的结果放在第一个位置:12+1+3 = 5,按照这样的方式进行

floor

使用floor可以对数进行向下取整的操作,例如2.2向下取整为2,2.9向下取整为2
ここに画像を挿入説明

ravel

前面讲到使用reshape可以将一个向量转换为一个矩阵,那么同样也是可以从一个矩阵转换为一个向量的,这里用到的是ravel
ここに画像を挿入説明
这里已经将一个3行4列的矩阵转换为一个向量,转换完成之后,同样还是可以进行后续的操作的
ここに画像を挿入説明

矩阵的拼接

hstack

ここに画像を挿入説明
如上,使用hstack就能够将a和b横着进行拼接;既然存在有横着拼的方式,同时也是存在有列着拼的方式

vstack

ここに画像を挿入説明

矩阵的切分

hsplit

ここに画像を挿入説明
如上,使用hsplit将a这个矩阵进行切分(按行)
除了上面这样的切分方式以外,还可以指定切分的地方进行矩阵切分
ここに画像を挿入説明
上面这样的切分方式就是在行中的第3的位置和第4的位置进行切分

vsplit

ここに画像を挿入説明

关于复制

“=” 进行复制

ここに画像を挿入説明
在上面首先使用np.arange(12)生成了一个向量,使用一个赋值符号将a赋值给b,将b进行shape,发现a也变了,发现此时a和b都是相同的
注意:这里表面上a和b的名字不相同,但是其实两者指向的是同一个内存空间

view() 浅层复制

ここに画像を挿入説明
上面的c是使用a.view()进行复制的,使用c is a可以判断出c和a两者并不是同一个值(返回的结果是False),这里将c的shape置为2,6,可以看到a的shape并没有发生变化;此时将c中间的一个值进行设定,可以看到a中间的代表的同一个内容的地方也发生了变化
结论:浅复制虽创建了一个新的变量,但是内部数据是共用的一套值

copy()

ここに画像を挿入説明
使用copy之后,就会创建一个全新的数据空间,此时修改其中一个,并不会影响到另一个

排序和索引

argmax

ここに画像を挿入説明
使用argmax能够获取最大值对应的索引,注意:这里的axis为0,表示的从列进行分析,从每一列中间获取到最大的值
前面已经获取到了值最大对应的索引,下面使用如下的方式就能够将对应的值进行一个展示
ここに画像を挿入説明

tile

既存のタイルを使用するベクトルまたは行列を拡張することができる
ここに画像を挿入説明
上述したように、(40未満)ビルドarange 0-40を使用する最初のステップ10は、ベクトルであり、タイル行ベクトルを使用して、この数は4倍カラムなりますターンの3倍の数

ソート

ソート本明細書で使用されるソート
ここに画像を挿入説明
上、ソートの使用に見られる軸= 1は、それぞれの行が並べ替えを表します

argsort

ここに画像を挿入説明
後でインデックスに対応する値を得るために[j]を用いて、argsortを使用する場合、最小値から最大値にベクトルまたは行列のインデックスシーケンスを得ることであることに留意すべきです

おすすめ

転載: blog.csdn.net/Escid/article/details/90578241