小编cod*_*000的帖子

Numpy,将列添加到现有结构化数组

我有一个起始数组:

[(1, [-112.01268501699997, 40.64249414272372])
 (2, [-111.86145708699996, 40.4945008710162])]
Run Code Online (Sandbox Code Playgroud)

其中第一列是int,第二列是带有浮点数的元组.我需要添加一个名为USNG的字符串列.

然后我创建一个结构化的numpy数组:

dtype = numpy.dtype([('USNG', '|S100')])
x = numpy.empty(array.shape, dtype=dtype)
Run Code Online (Sandbox Code Playgroud)

我想将x numpy数组附加到现有数组以添加新列,以便我可以为每一行输出一些信息.当我执行以下操作时:

numpy.append(array, x, axis=1)# I've also tried vstack and hstack
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

'TypeError: invalid type promotion'
Run Code Online (Sandbox Code Playgroud)

有关为什么会发生这种情况的任何建议?

谢谢

python numpy python-2.7 structured-array

4
推荐指数
2
解决办法
5103
查看次数

将 jupyter 笔记本表格向左对齐

当我在 Jupyter Notebooks 中创建一个简单的表格时,表格出现在单元格的中心。我该怎么做才能将该表向左对齐而不是居中对齐?

Jupyter 的乳胶表示例:

| This | is   |
|------|------|
|   a  | table|
Run Code Online (Sandbox Code Playgroud)

谢谢

latex jupyter-notebook

4
推荐指数
2
解决办法
8932
查看次数

使用Numpy数组创建唯一数组

你能创建一个包含所有唯一值的numpy数组吗?

myArray = numpy.random.random_integers(0,100,2500)
myArray.shape = (50,50)
Run Code Online (Sandbox Code Playgroud)

所以这里我有一个给定的随机50x50 numpy数组,但我可以有非唯一值.有没有办法确保每个价值都是独一无二的?

谢谢

更新:

我创建了一个基本函数来生成一个列表并填充一个唯一的整数.

        dist_x = math.sqrt(math.pow((extent.XMax - extent.XMin), 2))
        dist_y = math.sqrt(math.pow((extent.YMax - extent.YMin),2))
        col_x = int(dist_x / 100)
        col_y = int(dist_y / 100)
        if col_x % 100 > 0:
            col_x += 1
        if col_y % 100 > 0:
            col_y += 1
        print col_x, col_y, 249*169
        count = 1
        a = []

        for y in xrange(1, col_y + 1):
            row = []
            for x in xrange(1, col_x + 1):
                row.append(count)
                count …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy unique

3
推荐指数
1
解决办法
1477
查看次数

熊猫和对象上的调用函数

我有一个对象类型的列,我想将对象的属性访问到另一列中。

import pandas as pd

class foo(object):
    @property
    def value(self):
        return "bar"


if __name__ == "__main__":
    a = [foo(), foo(), foo()]
    df = pd.DataFrame(data=a, columns=['test'])
    df['value'] = df['test'].value
Run Code Online (Sandbox Code Playgroud)

这失败并出现以下错误:

AttributeError: 'Series' object has no attribute 'value'

有没有办法调用类上的属性或函数来填充新列?

python dataframe pandas

3
推荐指数
1
解决办法
2126
查看次数

计算numpy数组之间的距离

我有两个数组,第一个 np.array 是来自的点,第二个 np.array 是我需要计算的所有距离。

例子:

 import numpy as np
 from_array = np.array([(0,1), (1,1), ..., (x,y)])
 to_array = np.array([(5,1), (3,1), ..., (x,y)])
Run Code Online (Sandbox Code Playgroud)

我需要做的是取第一个条目from_array并计算from_array[0]到to_array中所有点之间的所有距离,然后保持最大距离。

所以我可以为此蛮力:

 def get_distances(from_array, to_array):
     results = []
     distances = []
     for pt in from_array:
        for to in to_array:
            results.append(calc_dist(pt, to))
        distances.append(results)
     return distances
Run Code Online (Sandbox Code Playgroud)

但这很慢,我正在寻找一种优化的计算方式,因为我可以有数千个点。

最终目标是计算 Hausdorff 距离。

fhd = np.mean(np.min(SomeDistanceArray,axis=0))
rhd = np.mean(np.min(SomeDistanceArray,axis=1))
print (max(fhd, rhd))
Run Code Online (Sandbox Code Playgroud)

我想用numpy的这个任务。我的距离可以是欧氏距离或平方欧氏距离。

所以我正在寻找帮助是计算两个 np.arrays 的欧几里德距离方法的优化方法。应该注意的是,数组 1 的行数可能比数组 2 多。这意味着二维数组的长度 (x,y) 可以将 10 行与 30 行进行比较。

python performance numpy

3
推荐指数
1
解决办法
3303
查看次数

查询 Pandas 数据帧索引

我的数据帧上有一个简单的索引(0:n 的整数)。

如果我想要行索引值 1,10,100,我如何查询索引以仅获取那些行?

谢谢

python pandas

3
推荐指数
2
解决办法
5802
查看次数

Numpy - 将列数据类型(dtype)分配给现有数组

我有一个给定的数组:

array = [(u'Andrew', -3, 3, 100.032) (u'Bob', -4, 4, 103.323) (u'Joe', -5, 5, 154.324)]
Run Code Online (Sandbox Code Playgroud)

这是从另一个进程(我无法控制)生成的CSV表,它输出这个numpy数组.我现在需要分配列的dtypes来进行进一步的分析.

我怎样才能做到这一点?

谢谢

python numpy python-2.7

2
推荐指数
1
解决办法
4669
查看次数

熊猫-修改每个单元格中的字符串值

我有一个熊猫数据框,我需要修改给定列中的所有值。每列将包含相同长度的字符串值。用户为每个值(例如:ex :)[1:3]和替换值提供要替换的索引"AAA"

这会将值1到3的字符串替换为value AAA

如何使用applymap,map或apply函数完成此操作?

谢谢

这是我使用下面标记的答案的最终解决方案:

import pandas as pd

df = pd.DataFrame({'A':['ffgghh','ffrtss','ffrtds'],
                     #'B':['ffrtss','ssgghh','d'],
                     'C':['qqttss',' 44','f']})
print df
old = ['g', 'r', 'z']
new = ['y', 'b', 'c']
vals = dict(zip(old, new))

pos = 2
for old, new in vals.items():
    df.ix[df['A'].str[pos] == old, 'A'] = df['A'].str.slice_replace(pos,pos + len(new),new)
print df
Run Code Online (Sandbox Code Playgroud)

python pandas

2
推荐指数
1
解决办法
4081
查看次数

使用继承类确定Python类的类型

我有多个类都继承自单个基类,这是一个简单的例子:

class DataSource(object):
    pass
class TableDataSource(DataSource):
    pass
Run Code Online (Sandbox Code Playgroud)

如果我想确定这些类是否属于DataSource类型,我想我可以执行以下操作:

>>> tdl = TableDataSource()
>>> print tdl is DataSource
False
Run Code Online (Sandbox Code Playgroud)

所以我在这里回到假,如何检查从DataSource继承的所有类是否都是数据源类型对象,而不必专门检查每个类类型?这样可以更轻松地检查对象类型,以便进行其他功能.

谢谢.

python oop

1
推荐指数
1
解决办法
56
查看次数

tarfile和无效的头错误问题

我有一个tar文件来自http://download.geofabrik.de/africa/botswana-latest.osm.bz2

当我将文件保存到磁盘并使用Python tarfile库提取.osm文件时,我收到无效的标头错误.

有没有办法解决这个错误?

7zip可以打开文件并提取数据而不会出现问题,但我需要编写数据提取脚本.

python tarfile python-2.7

1
推荐指数
1
解决办法
2497
查看次数