Numpy整数字符串
我想将一个numpy数组从一个整数转换为字符串,但是我的方法不工作,我想这可能也有一个更优雅的方法来解决我的问题。Numpy整数字符串
所以我有一个叫做“landuse”的整数数组,它是一系列代表不同土地利用类别的数字1-3。这是我目前的做法...(即不工作ATM)
landuse2 = landuse.astype('S10') for name in landuse2:
if name == '1.0':
name = 'Forest'
elif name = '2.0'
name = 'Water'
else:
name = 'Urban'
我已经尝试过的if语句来调用只是数字1,“1”,“1.0”,1 *没有运气。它运行时没有错误,landuse2转换为10个字符的字符串(尽管只有'1.0'被写入数组中),但for循环没有更新我的表。
编辑
对不起,我会一直在我的阵列是如何组织的更具体。 Landuse是名为Data的更大阵列的一部分,该阵列有10列和10,000行。
我已经简单地定义landuse2如下
landuse2 = Data[Landuse]
然后我本来打算用landuse2代替原来的数据[土地利用]
我认为这会工作,但是我首先需要将土地利用转换浮动到一个int
Data[Landuse]=np.array([a.setdefault(i,'Urban') for i in Data[Landuse]],dtype='|S10')
但是我试图改变这种状况浮筒由astype整数一直无果
Data[Landuse]= Data[Landuse].astype('int')
回答:
首先,让我解释为什么你的循环不工作,在Python中的任务,即a = 1
采取对象1
,并给它起名a
。当您完成name = "Water"
时,name
忘记了之前指向的内容,现在指向"Water"
,但这并不意味着将分配给name
的上一个对象替换为"Water"
。
这就是问题所在,现在需要解决。如果你的土地用途是一个整数代码数组,你可以使用一个查找表。该表应足够大,这样你就不会得到一个索引错误,当你做lookup_table[landuse.max()]
import numpy as np landuse = np.array([1,2,3,1,2,4])
lookup_table = np.array(['None', 'Forest', 'Water', 'Urban', 'Other'])
landuse_title = lookup_table[landuse]
而对于你的问题的最后一部分,numpy的ndarray是同质的数据结构,数组中的意思是一切都必须具有相同的数据类型。考虑到这个限制,应该很清楚,你不能把一行整数换成一行字符串。NumPy的确实有“柔性dtypes”,让你可以这样做:
>>> dt = np.dtype([('name', 'S4'), ('age', 'int'), ('height', 'float')]) >>> array = np.array([('Mark', 25, 70.5),('Ben',40,72.75)], dtype=dt)
>>> array
array([('Mark', 25, 70.5), ('Ben', 40, 72.75)],
dtype=[('name', '|S4'), ('age', '<i4'), ('height', '<f8')])
>>> array.shape
(2,)
>>> array['name']
array(['Mark', 'Ben'],
dtype='|S4')
我们已经创建了一个保持每个人的姓名,年龄和身高,但请注意,数组的形状(一个数组2),因为我们有两个“人”在阵列中。我不确定你的需求是什么,但你可以尝试使用灵活的dtype来将所有信息保存在一个数组中,如果这是你需要的。根据我的最终目标,我经常发现使用几个单独的数组或一组数组更容易。希望有所帮助。
回答:
我不是完全清楚你的问题是什么,但似乎你可以使用字典这样的:
import numpy as np landuse=np.array([1,2,3,1,2,4],dtype=np.integer)
a={1:'Forest',2:'Water'}
print [a.setdefault(i,'Urban') for i in landuse]
这将发出含有您感兴趣的字符串列表:
['Forest', 'Water', 'Urban', 'Forest', 'Water', 'Urban']
如果你的目标是在字符串数组numpy的最终结果,你可以这样做:
name=np.array([a.setdefault(i,'Urban') for i in landuse],dtype='|S10')
以上是 Numpy整数字符串 的全部内容, 来源链接: utcz.com/qa/259021.html