关于python中numpy 的array二维数组

1、如何删除某一行、某一列

  简单的例子:

Original=np.array([[1,2,7,4],
[7,5,1,4],
[7,8,11,9],
[11,3,17,2]])
如下都将使用该二维数组进行示例
删除某一行就是
np.delete(Original,1,axis=0)
想要删除某一列最简单的就是加上个转置然后删除,最后再转回来
np.delete(Original.T,1,axis=0)
多行删除就是把 1 的位置变成一个数组
np.delete(Original,[0,2],axis=0)
当然别忘记在前面接收一下
2、numpy中的array二维数组怎么由一行的数据进行排序
(1)普通的对整数类型的二维数组进行排列
第一步先创建一个排序序列:sorted_index=np.lexsort(sort)
在此之前要设置一下sort:这里想要按照第三列排序就是3,
并且不存在第零列,1、2、3这样子找自己需要的列就好
sort= Original[:,:3].T
sorted_index=np.lexsort(sort)
之后这里的sorted_index会提供一个分类的结果序列
例如:
[1 0 2 3]
之后我们把排序后的序列放到array二维数组中并替换:
Original=Original[sorted_index]
就会得到结果排序后输出数组

[[ 7 5 1 4]
[ 1 2 7 4]
[ 7 8 11 9]
[11 3 17 2]]

(2)对str类型的array二维数组针对某一列进行排序

这里就需要前面的知识点,不过在此之前需要进行数据处理。

在第一部中我们通过original的其中一列进行分类,

而sorted_index则是那个分类的结果序列!这个序列在这一部分相对重要,如下:

第一步:因为我们是按照某一列进行排序,

而同一个二维数组中会有一些str类型,

我又不会让array二维数组的其中一列变成int类型,怎么办呢。

通过np.delete将不需要分组的数据删除,数据如下

Original=np.array([[2,"张三"],
[1,"李四"],
[3,"王五"]])
temp = np.delete(Original.T,1,axis=0).T
print(temp)
接下来我用一个 temp 临时数组进行替代。
进行如上的操作之后,纯净的需要我们排序的数组就出来了
结果为:

[['2']
['1']
['3']]


之后将其强制转为int类型
(之所以这么麻烦就是因为我只会把整个数组强转,
单列不会,会的话就不用这样麻烦了)
temp = temp.astype(int)
print(temp)
结果为:

 


之后我们就可以排序了:
在这里我们期望的是得到sorted_index排序数列,
用需要排列的并且未经改变的数字排列位置进行排序
(也就是说数组的顺序没有经过改变)
之后像第一不一样得到sort和sorted_index

然后把sorted_index放到Original中:

print("排序结果为="+str(Original[sorted_index]))
得到排序结果:

排序结果为=[['1' '李四']
['2' '张三']
['3' '王五']]

至此完成。



 



posted @ 2023-06-27 10:13  Link_Soul  阅读(456)  评论(0)    收藏  举报