关于python中数组的问题,序列格式转换

https://blog.csdn.net/sinat_34474705/article/details/74458605?utm_source=blogxgwz1

https://www.cnblogs.com/ArsenalfanInECNU/p/4793354.html

https://blog.csdn.net/zxyhhjs2017/article/details/80157930

https://blog.csdn.net/sinat_27693393/article/details/73195570

https://vimsky.com/article/3717.html

二维数组的创建。

二维数组本身只是数学上的一个概念,我们要把数学中的东西,写进程序中

可以有多种表示数组的方式,

一种是利用np的库

一种是python本身的双层列表

(这两种格式只是支持的索引方式不相同。,,用np创建的array支持的更多些。)

1、

import numpy as np

c = np.array([[1.0,2.0],[3.0,4.0]])

print(c)

>>>[[1. 2.]

[3. 4.]]

print(c[:,[1]]) #这个是输出所有行的第一列

>>> import numpy
>>> a = numpy.zeros(shape=(5,2))
>>> a
array([[ 0.,  0.],
   [ 0.,  0.],
   [ 0.,  0.],
   [ 0.,  0.],
   [ 0.,  0.]])
>>> a[0] = [1,2]
>>> a[1] = [2,3]
>>> a
array([[ 1.,  2.],
   [ 2.,  3.],
   [ 0.,  0.],
   [ 0.,  0.],
   [ 0.,  0.]])

2、

pop=[[1,0,0,0],[0,1,1,1],[0,0,0,0]]

print(pop) #这个用双层序列构成的二维数组,是没有办法完成上面的np输出一列的,

#目前我知道的只有用循环

>>>[[1, 0, 0, 0], [0, 1, 1, 1], [0, 0, 0, 0]]

关于两种格式的互换,

叫做list和array的互换,

显然array支持的搜寻元素方式跟多一些。

import numpy as np

u = np.array([[1,2],[3,4]])

print("u array:",u)

m = u.tolist() #u array转换为list m

print("m list:",m)

k = np.array(m) #list m 再转换回array k

print("k array:",k)

>>>u array: [[1 2]

[3 4]]

>>>m list: [[1, 2], [3, 4]]

>>>k array: [[1 2]

[3 4]]

二维数组创建后赋值的问题

创建一个多行多列的数组如 56行,247列

##创建噪声序列

#mat=np.ones((56,247)) #注意这里传进去的要是元组这里是mat的类型,namestr是名字文件中有几个名字,也就是mat有几行。

#print(mat.shape[0])

#print(mat.shape[1])

#for i in range(mat.shape[0]):

# for k in range(mat.shape[1]):

# mat[i][k]=mat[i][k]*10+random.random() #后面是添加一个随机数。产生一个有噪声的序列。

#print(mat)

双层列表的切片

pop=[[1,0,0,0],[0,1,1,1],[0,0,0,0]]

print(pop)

print(pop[:2])

print(pop[2:])

>>>[[1, 0, 0, 0], [0, 1, 1, 1], [0, 0, 0, 0]]

>>>[[1, 0, 0, 0], [0, 1, 1, 1]] #这个是切片后的

>>>[[0, 0, 0, 0]] #切片的另一部分

二维数组,如何去除某一行或者某一列

1.numpy.delete(arr,obj,axis=None)

arr:输入向量

obj:表明哪一个子向量应该被移除。可以为整数或一个int型的向量

axis:表明删除哪个轴的子向量,若默认,则返回一个被拉平的向量

  • a = np.array(np.arange(12).reshape(3,4))

  • a

  • Out[301]:

  • array([[ 0, 1, 2, 3],

  • [ 4, 5, 6, 7],

  • [ 8, 9, 10, 11]])

  • np.delete(a,1,0)

  • Out[302]:

  • array([[ 0, 1, 2, 3],

  • [ 8, 9, 10, 11]])

  • np.delete(a,1,1)

  • Out[303]:

  • array([[ 0, 2, 3],

  • [ 4, 6, 7],

  • [ 8, 10, 11]])

  • np.delete(a,[0,1],1)

  • Out[304]:

  • array([[ 2, 3],

  • [ 6, 7],

  • [10, 11]])

  • np.delete(a,np.s_[::2],1)

  • Out[306]:

  • array([[ 1, 3],

  • [ 5, 7],

  • [ 9, 11]])

    示例:

    1.删除一列

    >>> dataset=[[1,2,3],[2,3,4],[4,5,6]]

    >>> import numpy as np

    >>> dataset = np.delete(dataset, -1, axis=1)

    >>> dataset

    array([[1, 2],

    [2, 3],

    [4, 5]])

    2.删除多列

    arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])

    np.delete(arr, [1,2], axis=1)

    array([[ 1, 4],

    [ 5, 8],

    [ 9, 12]])

数组中格式的问题

https://blog.csdn.net/wld914674505/article/details/80460042

  1. z = np.array([[1, 2, 3, 4],

  2. [5, 6, 7, 8],

  3. [9, 10, 11, 12],

  4. [13, 14, 15, 16]])

  5. z.shape

  6. (4, 4) #这里的z创建出来是 4行4列

    但我们只想要一列的话:

    • z.reshape(-1,1)

    • array([[ 1],

    • [ 2],

    • [ 3],

    • [ 4],

    • [ 5],

    • [ 6],

    • [ 7],

    • [ 8],

    • [ 9],

    • [10],

    • [11],

    • [12],

    • [13],

    • [14],

    • [15],

    • [16]])

    想要变成两列:

    • z.reshape(-1, 2)

    • array([[ 1, 2],

    • [ 3, 4],

    • [ 5, 6],

    • [ 7, 8],

    • [ 9, 10],

    • [11, 12],

    • [13, 14],

    • [15, 16]])

    python序列中每个元素加1的简单写法:

    n=[i+1 for i in range(1,10)]

    >>>[2,3,4,5,6,7,8,9,10]

    对应元素相加

    行相加、列相加:

    import numpy as np

    a = [1,2,3]

    b = [2,3,4]

    c = [3,4,5]

    print(np.sum([a,b,c], axis = 0)) #输出是[6 9 12]

    print(np.sum([a,b],axis=1)) #输出是[6 9]

    还有一个Python数组行和列返回结果:

    hang,lie=a.shape()

    #上面的语句是错误的,报错如下:

    TypeError: 'tuple' object is not callable

    应该吧()去掉如:hang,lie=a.shape,这样才是正确的写法。