小编Ada*_*ted的帖子

'for'循环中i = i + 1和i + = 1之间有什么区别?

我今天发现了一件奇怪的事情,并想知道是否有人可以了解这里的差异是什么?

import numpy as np

A = np.arange(12).reshape(4,3)
for a in A:
    a = a + 1

B = np.arange(12).reshape(4,3)
for b in B:
    b += 1
Run Code Online (Sandbox Code Playgroud)

运行每个for循环后,A没有更改,但B已经添加了一个元素.我实际上使用该B版本写入for循环内的初始化NumPy数组.

python loops numpy operators

110
推荐指数
4
解决办法
10万
查看次数

在 Spark Dataframe 中跨多行 json 字符串统一架构

我有一个关于包含一系列 json 字符串的 PySpark DataFrame 中的行的难题。

问题围绕着每一行可能包含与另一行不同的模式,因此当我想在 PySpark 中将所述行转换为可下标的数据类型时,我需要有一个“统一”模式。

例如,考虑这个数据框

import pandas as pd
json_1 = '{"a": 10, "b": 100}'
json_2 = '{"a": 20, "c": 2000}'
json_3 = '{"c": 300, "b": "3000", "d": 100.0, "f": {"some_other": {"A": 10}, "maybe_this": 10}}'
df = spark.createDataFrame(pd.DataFrame({'A': [1, 2, 3], 'B': [json_1, json_2, json_3]}))
Run Code Online (Sandbox Code Playgroud)

请注意,每一行都包含不同版本的 json 字符串。为了解决这个问题,我做了以下转换

import json
import pyspark.sql.functions as fcn
from pyspark.sql import Row
from collections import OrderedDict
from pyspark.sql import DataFrame as SparkDataFrame


def convert_to_row(d: dict) -> Row: …
Run Code Online (Sandbox Code Playgroud)

python pyspark

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

Numpy:高效的矩阵计算A*xj其中xj是X中的行j

因此,这个"问题"的背景是我正在尝试优化大型python项目.我开始为程序计时,并注意到几乎50%的运行时间花费在与此类似的计算上:

import numpy as np

# Example
A = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
X = np.random.multivariate_normal([0,0,0,0],np.eye(4),15000)

# Create a lambda function to use row based
F = lambda x: np.dot(A,x)

# Now calculating the value
answer = np.apply_along_axis(F, 1, X)

print answer.shape
Run Code Online (Sandbox Code Playgroud)

我试图找到一种方法来加快速度,但不断碰壁.这真的是这样做的最佳选择吗?

python numpy matrix vectorization

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

标签 统计

python ×3

numpy ×2

loops ×1

matrix ×1

operators ×1

pyspark ×1

vectorization ×1