Python Numpy:np.array 将字符串长度超过 30 的列表值转换为 ''

发布于 2025-01-11 21:58:07 字数 975 浏览 0 评论 0原文

我有一个 pythonList 字符串:

pythonList= ['Pricing1', 'Expense_Inflation_Rate_Annual.fac', 'Vertical', 'MNT_INFL_PC']

当我尝试通过像 pythonList[1] 这样的索引访问所有字符串时,它们工作得很好。

我将数组转换为 numpyArray,这样我就可以使用 np.where 函数,但现在当我尝试访问 numpyArray[1]< 等所有字符串时/code> 'Expense_Inflation_Rate_Annual.fac' 值现在保存 '' 而其他 3 个则按预期工作。

我的转换代码很简单:

numpyArray = np.array(pythonList)

编辑:

为了了解更多上下文,我正在使用 Python 3.9.2,并通过测试发现 numpy 不喜欢长度超过 30 个字符的字符串,任何超过 30 个字符的字符串都会得到输入。

这是我以前在 pythonList 中阅读的代码:

    with open (r'c:\\temp\{}'.format(resultFileName)) as lp:
        fileData = lp.readlines()
    pythonList= []
    for row in fileData:
        pythonList.append(row.split(','))

    numpyArray= np.array(pythonList)

如果有人可以提供更多详细信息,我们将不胜感激。

谢谢。

I have a pythonList of strings:

pythonList= ['Pricing1', 'Expense_Inflation_Rate_Annual.fac', 'Vertical', 'MNT_INFL_PC']

When I try to access all the strings by index like pythonList[1] they work just fine.

I converted the array into a numpyArray so I could use the np.where function, but now when I try to access all the strings like numpyArray[1] the 'Expense_Inflation_Rate_Annual.fac' value now holds '<str_, len() = 33>' instead while the other 3 work as intended.

My code for the conversion is simply:

numpyArray = np.array(pythonList)

Edit:

For more context I am using Python 3.9.2 and have discovered with testing that numpy does not like strings longer than 30 characters and anything more than 30 gets the <str_, len() = ##> input.

Here is the code I used to read in pythonList:

    with open (r'c:\\temp\{}'.format(resultFileName)) as lp:
        fileData = lp.readlines()
    pythonList= []
    for row in fileData:
        pythonList.append(row.split(','))

    numpyArray= np.array(pythonList)

If anyone could provide more detail on this, it would be greatly appreciated.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

得不到的就毁灭 2025-01-18 21:58:07
In [114]: pythonList = [
     ...:     "Pricing1",
     ...:     "Expense_Inflation_Rate_Annual.fac",
     ...:     "Vertical",
     ...:     "MNT_INFL_PC",
     ...: ]
In [115]: np.array(pythonList)
Out[115]: 
array(['Pricing1', 'Expense_Inflation_Rate_Annual.fac', 'Vertical',
       'MNT_INFL_PC'], dtype='<U33')

目前尚不清楚您从哪里获得''。如果我索引该字符串,结果是一个 类型str_` 且长度为 33 的对象。

In [116]: np.array(pythonList)[1]
Out[116]: 'Expense_Inflation_Rate_Annual.fac'
In [117]: type(np.array(pythonList)[1])
Out[117]: numpy.str_
In [118]: len(np.array(pythonList)[1])
Out[118]: 33

pythonList 我们得到类似的东西,只是类型略有不同:

In [119]: type(pythonList[1])
Out[119]: str
In [120]: len(pythonList[1])
Out[120]: 33

一个 Python 列表包含长度不同的 str 对象。当转换为 numpy 数组时,它们以 Un dtype 的字节形式存储。这里 U33 是输入中最长字符串的长度。

您提到使用 where,但没有详细说明。

numpy 字符串数组相对于字符串列表没有太多优势。

In [114]: pythonList = [
     ...:     "Pricing1",
     ...:     "Expense_Inflation_Rate_Annual.fac",
     ...:     "Vertical",
     ...:     "MNT_INFL_PC",
     ...: ]
In [115]: np.array(pythonList)
Out[115]: 
array(['Pricing1', 'Expense_Inflation_Rate_Annual.fac', 'Vertical',
       'MNT_INFL_PC'], dtype='<U33')

It's not clear where you get the '<str_, len() = 33>'. If I index that string, the result is an object of typestr_` and length 33.

In [116]: np.array(pythonList)[1]
Out[116]: 'Expense_Inflation_Rate_Annual.fac'
In [117]: type(np.array(pythonList)[1])
Out[117]: numpy.str_
In [118]: len(np.array(pythonList)[1])
Out[118]: 33

From pythonList we get something similar, except the type is slightly different:

In [119]: type(pythonList[1])
Out[119]: str
In [120]: len(pythonList[1])
Out[120]: 33

A Python list contains str objects that vary in length. When converted to a numpy array, they are stored as bytes with a Un dtype. Here U33 is the length of the longest string in the input.

You mention using where, but don't elaborate.

numpy arrays of strings don't have a lot of advantages relative to lists of strings.

扬花落满肩 2025-01-18 21:58:07

一旦获得了 numpy.str_ 元素的集合,您需要使用 str() 来获取实际的字符串。例如:

pythonList= ['Pricing1', 'Expense_Inflation_Rate_Annual.fac', 'Vertical', 'MNT_INFL_PC']
numpyArray = np.array(pythonList)
print(str(numpyArray[1]))

Once you have the collection of numpy.str_ elements, you need to use str() to get the actual string. For example:

pythonList= ['Pricing1', 'Expense_Inflation_Rate_Annual.fac', 'Vertical', 'MNT_INFL_PC']
numpyArray = np.array(pythonList)
print(str(numpyArray[1]))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文