小编Bra*_*mon的帖子

尝试使用brew安装Python3

尝试使用以下命令在mac中安装Python3:

brew安装python3

当我运行命令得到以下错误:

错误:已安装python 2.7.14_2要升级到3.6.5,请运行 __CODE__

如何在没有升级的情况下将python2和python3保存在mac中...

谢谢.!

homebrew python-3.x

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

计算矩阵中的邻居 - Conway Game of Life

对于每个矩阵元素,我想添加其所有相邻单元格的值。

从我的初始数组开始

board = np.array([[0, 1, 1],
                   [0, 1, 0],
                   [1, 0, 0]])
Run Code Online (Sandbox Code Playgroud)

我的结果应该是:

([2,2,2],
 [3,3,3],
 [1,2,1])
Run Code Online (Sandbox Code Playgroud)

我创建了一个函数并使用蛮力方法来查找其周围是否存在单元格。如果是,则将这些值相加并返回总数。我不确定我是否正确地处理我的 if 语句。它说以下错误

'具有多个元素的数组的真值不明确:使用 a.any() 或 a.all()'

def count_living_neighbors(board):
    count = np.zeros(board.shape, dtype=int)
    #
    # YOUR CODE HERE
    #

    for row in range(len(board)):
        for column in range(len(board[row])):
            total = 0
            if (board[column - 1]).any() in board:
                total += board[row][column-1]
            if (board[column + 1]).any() in board:
                total += board[row][column+1]    
            if (board[row - 1]).any() in board:
                total += board[row-1][column]
            if (board[row + 1]).any() in board: …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy

5
推荐指数
2
解决办法
2736
查看次数

将对象列表转换为熊猫数据框

如何将对象列表转换为熊猫数据框?

class Person(object):
    def __init__(self):
        self.name = ""
        self.year = 0
        self.salary = 0
Run Code Online (Sandbox Code Playgroud)

例如下面的作品,但我想有一个人类列表

import pandas as pd
import numpy as np

data = {'name': ['Alice', 'Bob', 'Charles', 'David', 'Eric'],
    'year': [2017, 2017, 2017, 2017, 2017],
    'salary': [40000, 24000, 31000, 20000, 30000]}

df = pd.DataFrame(data, index = ['Acme', 'Acme', 'Bilbao', 'Bilbao', 'Bilbao'])

print(df)
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas

5
推荐指数
2
解决办法
3016
查看次数

从几个专栏中获取最新的观察和日期

以下玩具DataFrame:

data = np.arange(35, dtype=np.float32).reshape(7, 5)
data = pd.concat((
    pd.DataFrame(list('abcdefg'), columns=['field1']),
    pd.DataFrame(data, columns=['field2', '2014', '2015', '2016', '2017'])),
    axis=1)

data.iloc[1:4, 4:] = np.nan
data.iloc[4, 3:] = np.nan

print(data)
  field1  field2  2014  2015  2016  2017
0      a     0.0   1.0   2.0   3.0   4.0
1      b     5.0   6.0   7.0   NaN   NaN
2      c    10.0  11.0  12.0   NaN   NaN
3      d    15.0  16.0  17.0   NaN   NaN
4      e    20.0  21.0   NaN   NaN   NaN
5      f    25.0  26.0  27.0  28.0  29.0
6      g    30.0  31.0  32.0 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

我什么时候应该使用熊猫的 Categorical dtype?

我的问题涉及优化熊猫系列的内存使用。文档说明

a 的内存使用量与Categorical类别数加上数据长度成正比。相比之下,objectdtype 是数据长度的常数倍。

我的理解是,pandasCategorical数据实际上是到表示类别的唯一(向下转换)整数映射,其中整数本身占用(大概)比构成objectdtype的字符串少的字节。

我的问题:有没有规则的拇指使用时pd.Categorical保存记忆了object?前面提到的比例有多直接,它不也取决于系列中每个元素(字符串)的长度吗?

在下面的测试中,pd.Categorical似乎遥遥领先。

import string

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

np.random.seed(444)
%matplotlib inline

def mem_usage(obj, index=False, total=True, deep=True):
    """Memory usage of pandas Series or DataFrame."""
    # Ported from https://www.dataquest.io/blog/pandas-big-data/
    usg = obj.memory_usage(index=index, deep=deep)
    if isinstance(obj, pd.DataFrame) and total:
        usg = usg.sum()
    # Bytes to megabytes …
Run Code Online (Sandbox Code Playgroud)

python memory pandas categorical-data

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

获取原始定义的函数模块

给定一个类或函数,有没有办法找到最初定义它的模块的完整路径?(即使用def xxxclass xxx.)

我知道有sys.modules[func.__module__].但是,如果func是在一个包中导入__init__.py,那么sys.modules只需重定向到那个__init__.py,因为就我的理解而言,该函数已被引入该命名空间.

一个具体的例子:

>>> import numpy as np
>>> import sys

>>> np.broadcast.__module__
'numpy'

>>> sys.modules[np.broadcast.__module__]
<module 'numpy' from '/Users/brad/.../site-packages/numpy/__init__.py'>
Run Code Online (Sandbox Code Playgroud)

显然,broadcast没有定义__init__.py; 它只是带进命名空间中的一个,这些 from module import *语句.

很高兴看到源np.broadcast中的定义位置(无论文件扩展名是什么,不管是.c还是.py).这可能吗?

python python-import

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

与“sys.getsizeof”不一致

为什么长度sys.getsizeof()为 1 的 Pythonstr比长度为 2 的字符串大?(对于长度 > 2,该关系似乎按预期单调增加。)

例子:

>>> from string import ascii_lowercase
>>> import sys

>>> strings = [ascii_lowercase[:i] for i, _ in enumerate(ascii_lowercase, 1)]
>>> strings
['a',
 'ab',
 'abc',
 'abcd',
 'abcde',
 'abcdef',
 'abcdefg',
 # ...

>>> sizes = dict(enumerate(map(sys.getsizeof, strings), 1))
>>> sizes
{1: 58,   # <--- ??
 2: 51,
 3: 52,
 4: 53,
 5: 54,
 6: 55,
 7: 56,
 8: 57,
 9: 58,
 10: 59,
 11: 60,
 12: 61,
 13: 62,
 14: …
Run Code Online (Sandbox Code Playgroud)

python string python-3.x pandas

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

Cython:为什么需要将 NumPy 数组类型转换为对象?

我在Pandas 源代码中看到过几次这样的事情:

def nancorr(ndarray[float64_t, ndim=2] mat, bint cov=0, minp=None):
    # ...
    N, K = (<object> mat).shape
Run Code Online (Sandbox Code Playgroud)

这意味着ndarray调用的 NumPymat类型转换为 Python 对象。*

经过进一步检查,似乎使用了这个,因为如果不是,则会出现编译错误。我的问题是:为什么首先需要这种类型转换

这里有一些例子。 这个答案只是表明元组打包在 Cython 中不像在 Python 中那样工作——但它似乎不是元组解包问题。(无论如何,这是一个很好的答案,我并不是要挑剔它。)

使用以下脚本,shape.pyx. 它将在编译时失败,并显示“无法将 'npy_intp *' 转换为 Python 对象”。

from cython cimport Py_ssize_t
import numpy as np
from numpy cimport ndarray, float64_t
cimport numpy as cnp
cnp.import_array()

def test_castobj(ndarray[float64_t, ndim=2] arr):

    cdef:
        Py_ssize_t b1, b2

    # Tuple unpacking - this will …
Run Code Online (Sandbox Code Playgroud)

python numpy cython

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

在 Cython 中定义字符串数组

在这里停留在一些基本的 Cython 上 -在 Cython 中定义字符串数组的规范且有效的方法是什么? 具体来说,我想定义一个固定长度的char. (请注意,此时我不想引入 NumPy。)

在 C 中,这将是:

/* cletters.c */
#include <stdio.h>

int main(void)
{
    const char *headers[3] = {"to", "from", "sender"};
    int i;
    for (i = 0; i < 3; i++)
        printf("%s\n", headers[i]);
}
Run Code Online (Sandbox Code Playgroud)

在 Cython 中尝试:

# cython: language_level=3
# letters.pyx

cpdef main():
    cdef const char *headers[3] = {"to", "from", "sender"}
    print(headers)
Run Code Online (Sandbox Code Playgroud)

但是,这给出了:

(cy) $ python3 ./setup.py build_ext --inplace --quiet
cpdef main():
    cdef const char *headers[3] = {"to", "from", "sender"} …
Run Code Online (Sandbox Code Playgroud)

cython

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

将 KeycloakOIDCFilter 与 Spark UI 结合使用 - 无法配置

我们正在尝试将KeycloakOIDCFilter其用作 Apache Spark UI 过滤器。然而,我们正在努力配置它KeycloakOIDCFilter本身。

我们在spark-defaults.conf中有:

spark.ui.filters=org.keycloak.adapters.servlet.KeycloakOIDCFilter
Run Code Online (Sandbox Code Playgroud)

该过滤器已成功获取,并且 Spark 主日志显示此过滤器已应用于所有 URL 路由。

我们已经在 Keycloak 管理控制台中生成了一个客户端配置文件,该文件已生成一个keycloak-oidc.json.

但我们如何讲述KeycloakOIDCFilter这些信息呢?

来自 Spark文档

还可以通过设置spark.<class name of filter>.param.<param name>=<value> 以下形式的配置条目在配置中指定过滤器参数:

spark.ui.filters=com.test.filter1
spark.com.test.filter1.param.name1=foo
spark.com.test.filter1.param.name2=bar
Run Code Online (Sandbox Code Playgroud)

在我们的例子中,这似乎是:

spark.org.keycloak.adapters.servlet.KeycloakOIDCFilter.param.<name>=<value>
Run Code Online (Sandbox Code Playgroud)

但是,KeycloakOIDCFilter Java 类只有两个构造函数。一种根本不带任何参数,一种带KeycloakConfigResolver.

Keycloak Java servlet 过滤器适配器文档仅讨论web.xml在配置 Spark 的情况下不适用的内容。

那么我们如何正确配置/指向KeycloakOIDCFilterservlet 过滤器的参数呢?


更新:我们已经确定spark.org.keycloak.adapters.servlet.KeycloakOIDCFilter.param.keycloak.config.file可用于指向配置文件,但Spark 似乎不使用 SessionManager,从而导致可能无法解决的单独错误。

java servlet-filters apache-spark openid-connect keycloak

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