三生一梦

文章 评论 浏览 29

三生一梦 2025-02-20 20:16:06

您应该参考此文档 a>实现材料3类型量表(可以在

作为如何实现的简短说明:

  1. 您的应用主题应从材料3 主题继承,例如:
<style name=Theme.MyApp" parent ="Theme.material3.Light.NoActionBar">
    <!-- add additional properties here -->
</style>

不要忘记在 androidmanifest.xml中指定您的主题:

<application
     android:theme"@style/Theme.MyApp"
     ...
     />
  1. 然后,如果您不需要自定义每种材料样式,只需根据需要使用它们:
<TextView
    style="?textAppearanceDisplaySmall" 
    ... 
    />
  1. 另一方面,您 do 需要自定义每种样式,然后关注
<style name="TextAppearance.MyApp.DisplaySmall" parent="TextAppearance.Material3.DisplaySmall">
  ...
  <item name="fontFamily">@font/custom_font</item>
  <item name="android:textStyle">normal</item>
  <item name="android:textAllCaps">false</item>
  <item name="android:textSize">64sp</item>
  <item name="android:letterSpacing">0</item>
  ...
</style>

然后在您的theme.xml中:

<style name="Theme.MyApp" parent="Theme.Material3.DayNight.NoActionBar">
  ...
  <item name="textAppearanceDisplaySmall">@style/TextAppearance.MyApp.DisplaySmall</item>
  ...
</style>

至于标题 vs. title vs. 标签,您链接的文档对我来说很清楚:

  • 使用标题样式的高度强调文本,用于简短
  • 使用 title> title> title for Mided强调可能更长的文本

,例如,如果您有带标题的卡,则可以使用标题样式,如果它说“ ada lovelace”,但是 title> title 如果它说“设计是科学和甚至是艺术中断”。

  • 标签与上面的其他两个非常明显不同,因为该文件说:

标签样式是较小的,功利主义风格,用于诸如内容主体中的文本或非常小的文本,例如字幕 /strong>。 按钮,例如,使用标签大型样式。

You should refer to this documentation to implement the material 3 type scale (link can be found on the material 3 website in this section of the typography documentation by the way).

As a short explanation of how to implement:

  1. your app theme should inherit from a Material3 theme, for example:
<style name=Theme.MyApp" parent ="Theme.material3.Light.NoActionBar">
    <!-- add additional properties here -->
</style>

Don't forget to specify your theme in your AndroidManifest.xml file:

<application
     android:theme"@style/Theme.MyApp"
     ...
     />
  1. then if you don't need to customize each individual material style, simply use them as needed:
<TextView
    style="?textAppearanceDisplaySmall" 
    ... 
    />
  1. if on the other hand you do need to customize each style, then follow the guide found on Github:
<style name="TextAppearance.MyApp.DisplaySmall" parent="TextAppearance.Material3.DisplaySmall">
  ...
  <item name="fontFamily">@font/custom_font</item>
  <item name="android:textStyle">normal</item>
  <item name="android:textAllCaps">false</item>
  <item name="android:textSize">64sp</item>
  <item name="android:letterSpacing">0</item>
  ...
</style>

then in your theme.xml:

<style name="Theme.MyApp" parent="Theme.Material3.DayNight.NoActionBar">
  ...
  <item name="textAppearanceDisplaySmall">@style/TextAppearance.MyApp.DisplaySmall</item>
  ...
</style>

As for Headline vs. Title vs. Label, the documentation you linked seems clear to me:

  • use the Headline style for high emphasis text that is short
  • use Title style for medium emphasis text that may be longer

So for example if you have a card with a title, you may use the Headline style if it says "Ada Lovelace" but Title if it says "Design is where science and art break even".

  • Label is very clearly different than the other two above since the documentation says:

Label styles are smaller, utilitarian styles, used for things like the text inside components or for very small text in the content body, such as captions. Buttons, for example, use the label large style.

在材料设计3中使用排版的正确方法是什么?

三生一梦 2025-02-20 17:35:46

通常,当您看到此错误时,这意味着,要么以某种方式更改了发送到Webhook处理程序的HTTP请求身体条纹,要么您可能无法使用正确的Webhook Secret。

抛出例外的最可能原因是,您的路由器将主体解析为JSON,使用 router.use(express.json()) constructEvent 需要您从请求中收到的原始的,无与伦比的主体来验证签名。 验证您拥有原始身体

要 像这样在路由上的 router.use('/webhook',express.raw({type:“*/*”}))>

Normally when you see this error, it means that, either the HTTP request body Stripe sent to your webhook handler has been altered in some way or You may not be using the correct webhook secret.

The most likely reason it is throwing an exception is because your router is parsing body as JSON with router.use(express.json()). constructEvent requires the raw, unparsed body you receive from the request to verify the signature. To verify you have the raw body you can print it out and see if you get something like <Buffer 28 72 10..>

You can tell your router to keep the request body raw by setting something like this on your route router.use('/webhook', express.raw({type: "*/*"}))

条纹错误:没有发现与有效载荷的预期签名匹配的签名。您是否通过从条纹中收到的原始请求主体?

三生一梦 2025-02-20 17:16:35

根据doc, keypress 您暂时按下的角色。因此,这就是您始终看到字符的原因,除了 event.target.value 中的最新字符。

例如 - &gt;您键入 pizza event.target.value 将具有 pizz

由于最近的角色尚未被任何新输入压制。

如注释中所述,您可以使用输入在键入时显示所有字符。

as per doc , keypress will sent previous character of a character which you are pressing at moment. So that is reason you always see characters except most recent character in your event.target.value.

e.g. -> you typed pizza , event.target.value will have pizz.

As most recent character is yet to pressed down by any new input.

As mentioned in comments, you can use keyup or input for displaying all characters as soon as you typed it.

Angular Keypress存储空间而不是首字母

三生一梦 2025-02-20 16:19:10

可以使用策略模式

让我们从第一个示例开始。我们需要一些 processortype 的枚举:

public enum ProcessorType 
{
    Simple, Complex
}

这是我们的处理器的抽象:

public interface IProcessor
{
    DateTime DateCreated { get; }
}

及其具体插入:

public class SimpleProcessor : IProcessor
{
    public DateTime DateCreated { get; } = DateTime.Now;
}

public class ComplexProcessor : IProcessor
{
    public DateTime DateCreated { get; } = DateTime.Now;
}   

然后,我们需要一个具有缓存值的工厂:

public class ProcessorFactory
{
    private static readonly IDictionary<ProcessorType, IProcessor> _cache 
        = new Dictionary<ProcessorType, IProcessor>()
    {
        { ProcessorType.Simple,  new SimpleProcessor() },
        { ProcessorType.Complex, new ComplexProcessor() }
    };

    public IProcessor GetInstance(ProcessorType processorType) 
    {
       return _cache[processorType];
    }
}

可以像这样运行代码:

ProcessorFactory processorFactory = new ProcessorFactory();
Thread.Sleep(3000);
var simpleProcessor = processorFactory.GetInstance(ProcessorType.Simple);
Console.WriteLine(simpleProcessor.DateCreated); // OUTPUT: 2022-07-07 8:00:01

ProcessorFactory processorFactory_1 = new ProcessorFactory();
Thread.Sleep(3000);
var complexProcessor = processorFactory_1.GetInstance(ProcessorType.Complex);
Console.WriteLine(complexProcessor.DateCreated); // OUTPUT: 2022-07-07 8:00:01  

第二种方法

第二种方法是使用DI容器。因此,我们需要修改工厂以获取依赖性注入容器的实例:

public class ProcessorFactoryByDI
{
    private readonly IDictionary<ProcessorType, IProcessor> _cache;

    public ProcessorFactoryByDI(
        SimpleProcessor simpleProcessor,
        ComplexProcessor complexProcessor)
    {
        _cache = new Dictionary<ProcessorType, IProcessor>()
        {
            { ProcessorType.Simple, simpleProcessor },
            { ProcessorType.Complex, complexProcessor }
        };
    }

    public IProcessor GetInstance(ProcessorType processorType)
    {
        return _cache[processorType];
    }
}

如果您使用ASP.NET Core,那么您可以将对象声明为单身人士:

services.AddSingleton<SimpleProcessor>();
services.AddSingleton<ComplexProcessor>();

请阅读更多有关

It is possible to use Strategy pattern with combination of Factory pattern. Factory objects can be cached to have reusable objects without recreating them when objects are necessary.
As an alternative to caching, it is possible to use singleton pattern. In ASP.NET Core it is pretty simple. And if you have DI container, just make sure that you've set settings of creation instance to singleton

Let's start with the first example. We need some enum of ProcessorType:

public enum ProcessorType 
{
    Simple, Complex
}

Then this is our abstraction of processors:

public interface IProcessor
{
    DateTime DateCreated { get; }
}

And its concrete implemetations:

public class SimpleProcessor : IProcessor
{
    public DateTime DateCreated { get; } = DateTime.Now;
}

public class ComplexProcessor : IProcessor
{
    public DateTime DateCreated { get; } = DateTime.Now;
}   

Then we need a factory with cached values:

public class ProcessorFactory
{
    private static readonly IDictionary<ProcessorType, IProcessor> _cache 
        = new Dictionary<ProcessorType, IProcessor>()
    {
        { ProcessorType.Simple,  new SimpleProcessor() },
        { ProcessorType.Complex, new ComplexProcessor() }
    };

    public IProcessor GetInstance(ProcessorType processorType) 
    {
       return _cache[processorType];
    }
}

And code can be run like this:

ProcessorFactory processorFactory = new ProcessorFactory();
Thread.Sleep(3000);
var simpleProcessor = processorFactory.GetInstance(ProcessorType.Simple);
Console.WriteLine(simpleProcessor.DateCreated); // OUTPUT: 2022-07-07 8:00:01

ProcessorFactory processorFactory_1 = new ProcessorFactory();
Thread.Sleep(3000);
var complexProcessor = processorFactory_1.GetInstance(ProcessorType.Complex);
Console.WriteLine(complexProcessor.DateCreated); // OUTPUT: 2022-07-07 8:00:01  

The second way

The second way is to use DI container. So we need to modify our factory to get instances from dependency injection container:

public class ProcessorFactoryByDI
{
    private readonly IDictionary<ProcessorType, IProcessor> _cache;

    public ProcessorFactoryByDI(
        SimpleProcessor simpleProcessor,
        ComplexProcessor complexProcessor)
    {
        _cache = new Dictionary<ProcessorType, IProcessor>()
        {
            { ProcessorType.Simple, simpleProcessor },
            { ProcessorType.Complex, complexProcessor }
        };
    }

    public IProcessor GetInstance(ProcessorType processorType)
    {
        return _cache[processorType];
    }
}

And if you use ASP.NET Core, then you can declare your objects as singleton like this:

services.AddSingleton<SimpleProcessor>();
services.AddSingleton<ComplexProcessor>();

Read more about lifetime of an object

哪种设计模式用于根据输入使用不同的子类

三生一梦 2025-02-20 08:18:30

它正在发送前飞行请求。我相信这是因为我使用的是HTTP而不是HTTP,并且请求发送给HTTPS。

It is sending a preflight request. I believe this is because I was using the HTTP instead of HTTPS and the request sends to HTTPS.

从移动电话发送HTTP请求不像桌面那样工作(发送&#x27;选项而不是#x27; post)

三生一梦 2025-02-20 05:55:30

您为什么不为此过程创建每日cronjob?

Why don't you create a daily cronJob with this process?

如何重新启动初始容器

三生一梦 2025-02-19 03:59:35

我有一个问题。我使用以下命令,解决了我的问题。显然,此问题是由于字符串中的负字符而发生的。

new String(Base64.getUrlDecoder().decode());

I had such a problem. I used the following command and my problem was solved. Apparently, this problem occurs because of the minus character in the string.

new String(Base64.getUrlDecoder().decode());

非法基本64字符2D

三生一梦 2025-02-19 02:25:03
div = c("A", "B")
div_by = "C"
DF[div] <- DF[div] / DF[[div_by]]

#            A           B   C
# 1 0.17391304  0.34782609  23
# 2 0.01538462  0.03692308 325
# 3 0.10714286  0.41071429  56
# 4 3.47619048 11.14285714  21 
# 5 0.10798122  0.10798122 213

数据

DF data.frame(
  A = c(4, 5, 6, 73, 23), B = c(8, 12, 23, 234, 23), C = c(23, 325, 56, 21, 213)
)
div = c("A", "B")
div_by = "C"
DF[div] <- DF[div] / DF[[div_by]]

#            A           B   C
# 1 0.17391304  0.34782609  23
# 2 0.01538462  0.03692308 325
# 3 0.10714286  0.41071429  56
# 4 3.47619048 11.14285714  21 
# 5 0.10798122  0.10798122 213

Data

DF data.frame(
  A = c(4, 5, 6, 73, 23), B = c(8, 12, 23, 234, 23), C = c(23, 325, 56, 21, 213)
)

将所有列除以特定列,除了一个

三生一梦 2025-02-18 23:33:11

您不需要太多代码就可以在同一画布上弹跳一些球...
当然,图书馆无需这样做。

我们可以使用 arc 函数绘制的球:

  • 移动是增加x或y的位置,代码中是 x += vx
  • 弹跳我们只是更改方向,您可以看到它在我的代码 vx *= -1
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');

class ball {
  constructor(data) {
    this.data = data
  }
  draw() {
    this.data.x += this.data.vx
    this.data.y += this.data.vy
    if (this.data.x > canvas.width || this.data.x < 0) this.data.vx *= -1
    if (this.data.y > canvas.height || this.data.y < 0) this.data.vy *= -1
    
    ctx.beginPath()
    ctx.fillStyle = this.data.color
    ctx.arc(this.data.x,this.data.y, this.data.radius, 0, 2*Math.PI);
    ctx.fill()
  }
}

const balls = [
  new ball({x: 10, y: 10, vx: 0, vy: 1, radius: 8, color: "pink" }),
  new ball({x: 90, y: 90, vx: 0, vy: -1, radius: 8, color: "red" }),
  new ball({x: 5, y: 50, vx: 1, vy: 1.5, radius: 8, color: "cyan" })
]
 
function animate() {
  ctx.clearRect(0, 0, canvas.width, canvas.height)
  balls.forEach(b => b.draw())
  requestAnimationFrame(animate)
}

animate()
<canvas id="canvas" width=100 height=100></canvas>

You don't need that much code to have some balls bouncing on the same canvas ...
Certainly no need for a library to just do that.

The balls we can draw using arc functions:
https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/arc

  • movement is to increase the position on x or y, in the code is the x += vx
  • bouncing we just change the direction, you can see it in my code vx *= -1

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');

class ball {
  constructor(data) {
    this.data = data
  }
  draw() {
    this.data.x += this.data.vx
    this.data.y += this.data.vy
    if (this.data.x > canvas.width || this.data.x < 0) this.data.vx *= -1
    if (this.data.y > canvas.height || this.data.y < 0) this.data.vy *= -1
    
    ctx.beginPath()
    ctx.fillStyle = this.data.color
    ctx.arc(this.data.x,this.data.y, this.data.radius, 0, 2*Math.PI);
    ctx.fill()
  }
}

const balls = [
  new ball({x: 10, y: 10, vx: 0, vy: 1, radius: 8, color: "pink" }),
  new ball({x: 90, y: 90, vx: 0, vy: -1, radius: 8, color: "red" }),
  new ball({x: 5, y: 50, vx: 1, vy: 1.5, radius: 8, color: "cyan" })
]
 
function animate() {
  ctx.clearRect(0, 0, canvas.width, canvas.height)
  balls.forEach(b => b.draw())
  requestAnimationFrame(animate)
}

animate()
<canvas id="canvas" width=100 height=100></canvas>

Lottie Web:同时在同一画布中播放2个动画

三生一梦 2025-02-18 12:42:40

或者,您可以像这样更改外面颜色

Theme(
  data: Theme.of(context)
       .copyWith(colorScheme: ColorScheme.fromSwatch().copyWith(onSurface:Colors.white),
datePickerTheme: DatePickerThemeData());

or you can change the onSurface color like so

Theme(
  data: Theme.of(context)
       .copyWith(colorScheme: ColorScheme.fromSwatch().copyWith(onSurface:Colors.white),
datePickerTheme: DatePickerThemeData());

残疾日/月的扑来酱更改风格(理想情况下是划掉或颜色变化)

三生一梦 2025-02-18 03:27:33

我对这个问题的解释是,应该生成10种不同的伪随机时间。然后,用户可以通过指定索引值(0-9)来选择一个值。所选时间将被显示,并指​​示那些时间之间的关系 - 即,之前或之后。

如果是这样,则:

from random import randint

N = 10
PRINT = True

def hhmmss():
    return randint(0, 23), randint(0, 59), randint(0, 59)

def format(t):
    return f'{t[0]:02d}:{t[1]:02d}:{t[2]:02d}'

tracker = set()

while len(tracker) < N:
    tracker.add(hhmmss())

tracker = list(tracker)

while True:
    try:
        if PRINT:
            for i, v in enumerate(tracker):
                print(f'{i}. {format(v)}')
            print()
        if (s1 := int(input(f'Select an index in the range 0-{N-1} (Ctrl-C to exit): '))) < 0 or s1 > N-1:
            raise ValueError('Out of range')
        if (s2 := int(input(f'Select another index in the range 0-{N-1}: '))) < 0 or s2 > N-1:
            raise ValueError('Out of range')
        if s1 == s2:
            raise ValueError('Selected values must differ')
        dt1, dt2 = tracker[s1], tracker[s2]
        print('You chose:', format(dt1), 'and', format(dt2))
        if dt1 < dt2:
            print(format(dt1), 'is earlier than', format(dt2))
        else:
            print(format(dt1), 'is later than', format(dt2))
    except ValueError as e:
        print(e)
    except KeyboardInterrupt:
        break

My interpretation of this question is that 10 different pseudo-random times should be generated. The user can then choose a value by specifying an index value (0-9). The chosen times will be shown along with an indication of relationship between those times - i.e., before or after.

If that's the case then:

from random import randint

N = 10
PRINT = True

def hhmmss():
    return randint(0, 23), randint(0, 59), randint(0, 59)

def format(t):
    return f'{t[0]:02d}:{t[1]:02d}:{t[2]:02d}'

tracker = set()

while len(tracker) < N:
    tracker.add(hhmmss())

tracker = list(tracker)

while True:
    try:
        if PRINT:
            for i, v in enumerate(tracker):
                print(f'{i}. {format(v)}')
            print()
        if (s1 := int(input(f'Select an index in the range 0-{N-1} (Ctrl-C to exit): '))) < 0 or s1 > N-1:
            raise ValueError('Out of range')
        if (s2 := int(input(f'Select another index in the range 0-{N-1}: '))) < 0 or s2 > N-1:
            raise ValueError('Out of range')
        if s1 == s2:
            raise ValueError('Selected values must differ')
        dt1, dt2 = tracker[s1], tracker[s2]
        print('You chose:', format(dt1), 'and', format(dt2))
        if dt1 < dt2:
            print(format(dt1), 'is earlier than', format(dt2))
        else:
            print(format(dt1), 'is later than', format(dt2))
    except ValueError as e:
        print(e)
    except KeyboardInterrupt:
        break

我想在下面写的十个不同的时刻,我想选择其中两个。看看哪个发生了

三生一梦 2025-02-18 00:37:02

有没有办法在转换为dataFrame时指定类型?

是的。其他答案在创建数据框后会转换DTYPE,但是我们可以指定创建时的类型。使用 dataframe.from_records read_csv(dtype = ...)取决于输入格式。

后者有时需要避免使用大数据避免内存错误。


1。 a>

从a

x = [['foo', '1.2', '70'], ['bar', '4.2', '5']]

df = pd.DataFrame.from_records(np.array(
    [tuple(row) for row in x], # pass a list-of-tuples (x can be a list-of-lists or 2D array)
    'object, float, int'       # define the column types
))

输出:

>>> df.dtypes
# f0     object
# f1    float64
# f2      int64
# dtype: object

2。 ...)

如果您是从文件中读取数据时间。

例如,在这里,我们将30m行读取等级为8位整数,而 genre at extorical:

lines = '''
foo,biography,5
bar,crime,4
baz,fantasy,3
qux,history,2
quux,horror,1
'''
columns = ['name', 'genre', 'rating']
csv = io.StringIO(lines * 6_000_000) # 30M lines

df = pd.read_csv(csv, names=columns, dtype={'rating': 'int8', 'genre': 'category'})

在这种情况下,我们在加载时将内存使用量减半:

>>> df.info(memory_usage='deep')
# memory usage: 1.8 GB
>>> pd.read_csv(io.StringIO(lines * 6_000_000)).info(memory_usage='deep')
# memory usage: 3.7 GB

这是一种方式到<避免使用大数据的内存错误。加载后,并非总是可以更改dtypes ,因为我们可能没有足够的内存来加载默认类型的数据。

Is there a way to specify the types while converting to DataFrame?

Yes. The other answers convert the dtypes after creating the DataFrame, but we can specify the types at creation. Use either DataFrame.from_records or read_csv(dtype=...) depending on the input format.

The latter is sometimes necessary to avoid memory errors with big data.


1. DataFrame.from_records

Create the DataFrame from a structured array of the desired column types:

x = [['foo', '1.2', '70'], ['bar', '4.2', '5']]

df = pd.DataFrame.from_records(np.array(
    [tuple(row) for row in x], # pass a list-of-tuples (x can be a list-of-lists or 2D array)
    'object, float, int'       # define the column types
))

Output:

>>> df.dtypes
# f0     object
# f1    float64
# f2      int64
# dtype: object

2. read_csv(dtype=...)

If you're reading the data from a file, use the dtype parameter of read_csv to set the column types at load time.

For example, here we read 30M rows with rating as 8-bit integers and genre as categorical:

lines = '''
foo,biography,5
bar,crime,4
baz,fantasy,3
qux,history,2
quux,horror,1
'''
columns = ['name', 'genre', 'rating']
csv = io.StringIO(lines * 6_000_000) # 30M lines

df = pd.read_csv(csv, names=columns, dtype={'rating': 'int8', 'genre': 'category'})

In this case, we halve the memory usage upon load:

>>> df.info(memory_usage='deep')
# memory usage: 1.8 GB
>>> pd.read_csv(io.StringIO(lines * 6_000_000)).info(memory_usage='deep')
# memory usage: 3.7 GB

This is one way to avoid memory errors with big data. It's not always possible to change the dtypes after loading since we might not have enough memory to load the default-typed data in the first place.

更改Pandas中的列类型

三生一梦 2025-02-17 22:37:01

代替直接查询 module.objects.get(id = module_id),您可以实例化 module 对象使用:
模块(id = model_id),因此将您的方法重写为:

def reorder_modules(self, request, *args, **kwargs):
    updatabale_modules = []
    for module_id, module_order in request.data.get("modules", {}).items():
        _mod = Module(id=module_id)
        _mod.order = module_order
        updatabale_modules.append(_mod)
    Module.objects.bulk_update(updatabale_modules, ["order"])
    return Response({"detail": "successfully reordered course modules"}, status=HTTP_200_OK)

我使用Query Inspector调试此视图,它确实仅产生一个DB查询,并且可以与不存在的IDS一起使用

In stead of querying directly Module.objects.get(id=module_id), you can instantiate a Module object using:
Module(id=model_id), so that rewrite your method to:

def reorder_modules(self, request, *args, **kwargs):
    updatabale_modules = []
    for module_id, module_order in request.data.get("modules", {}).items():
        _mod = Module(id=module_id)
        _mod.order = module_order
        updatabale_modules.append(_mod)
    Module.objects.bulk_update(updatabale_modules, ["order"])
    return Response({"detail": "successfully reordered course modules"}, status=HTTP_200_OK)

I debugged this view with query inspector and it really produced only one db query, and it works with non-existent ids

在Django中重新订购对象的有效方法

三生一梦 2025-02-17 17:43:42

如果要更改一些空间,则可以使用SteamBuilder,但它将重建所有小部件

You can use SteamBuilder instead, if you want to change a bit of space, but it will rebuild all widgets

在Iconbutton中切换图标

三生一梦 2025-02-16 17:15:35

您可以尝试将2D数组重塑为3D数组,并在轴0中具有一个维度:

big_array = np.zeros((1,32,32))

2d_array = np.ones((32,32))

big_array = np.append(big_array, 2d_array.reshape(1,32,32), axis=0)
big_array.shape
>>> (2,32,32)

You can try reshaping the 2d arrays into 3d arrays with one dimension in the axis 0:

big_array = np.zeros((1,32,32))

2d_array = np.ones((32,32))

big_array = np.append(big_array, 2d_array.reshape(1,32,32), axis=0)
big_array.shape
>>> (2,32,32)

numpy附加2D数组

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

更多

友情链接

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文