首页 > 解决方案 > np.insert 问题。我无法插入所有字符串(python3.7;numpy1.19.2)

问题描述

我是python的初学者。(我英文不好)我想用pandas来执行一些excel文件。

import numpy as np

Res = [['CS管理','教師管理','1']]
Res = np.insert(Res, 0, values='Administrator', axis=1)
print(Res)

期望是

 [['Administrator' 'CS管理' '教師管理' '1']]

输出是

[['Admi' 'CS管理' '教師管理' '1']]

我应该怎么处理?期待你的答复

在此处输入图像描述

标签: pythonnumpy

解决方案


Res是一个包含 4 个字符长的字符串的数组:

In [87]: Res = np.array([['CS管理','教師管理','1']])
In [88]: Res
Out[88]: array([['CS管理', '教師管理', '1']], dtype='<U4')

from 的结果insert仍然具有 'U4' dtype,因此它会截断插入。

In [89]: np.insert(Res, 0, values='Administrator', axis=1)
Out[89]: array([['Admi', 'CS管理', '教師管理', '1']], dtype='<U4')

如果我们从更长的开始dtype

In [99]: Res = np.array([['CS管理','教師管理','1']], 'U15')
In [100]: Res
Out[100]: array([['CS管理', '教師管理', '1']], dtype='<U15')
In [101]: np.insert(Res, 0, values='Administrator', axis=1)
Out[101]: array([['Administrator', 'CS管理', '教師管理', '1']], dtype='<U15')

另一种方法是可变长度objectdtype:

In [102]: Res = np.array([['CS管理','教師管理','1']], object)
In [103]: Res
Out[103]: array([['CS管理', '教師管理', '1']], dtype=object)
In [104]: np.insert(Res, 0, values='Administrator', axis=1)
Out[104]: array([['Administrator', 'CS管理', '教師管理', '1']], dtype=object)

一个是否比另一个更好可能取决于您正在进行的进一步处理。

由于您在开始时添加了新字符串,因此连接也一样好:

In [106]: Res = np.array([['CS管理','教師管理','1']])
In [108]: np.concatenate((np.array([['Administrator']]),Res), axis=1)
Out[108]: array([['Administrator', 'CS管理', '教師管理', '1']], dtype='<U13')

推荐阅读