bool-hybrid-array 9.10.18__tar.gz → 9.11.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {bool_hybrid_array-9.10.18/bool_hybrid_array.egg-info → bool_hybrid_array-9.11.7}/PKG-INFO +60 -6
- bool_hybrid_array-9.10.18/PKG-INFO → bool_hybrid_array-9.11.7/README.md +600 -591
- bool_hybrid_array-9.11.7/bool_hybrid_array/__init__.py +29 -0
- {bool_hybrid_array-9.10.18 → bool_hybrid_array-9.11.7}/bool_hybrid_array/__main__.py +28 -1
- {bool_hybrid_array-9.10.18 → bool_hybrid_array-9.11.7}/bool_hybrid_array/core.py +942 -868
- {bool_hybrid_array-9.10.18 → bool_hybrid_array-9.11.7}/bool_hybrid_array/int_array/__init__.py +17 -65
- bool_hybrid_array-9.10.18/README.md → bool_hybrid_array-9.11.7/bool_hybrid_array.egg-info/PKG-INFO +645 -551
- {bool_hybrid_array-9.10.18 → bool_hybrid_array-9.11.7}/bool_hybrid_array.egg-info/requires.txt +3 -0
- {bool_hybrid_array-9.10.18 → bool_hybrid_array-9.11.7}/setup.py +11 -4
- bool_hybrid_array-9.10.18/bool_hybrid_array/__init__.py +0 -47
- {bool_hybrid_array-9.10.18 → bool_hybrid_array-9.11.7}/LICENSE +0 -0
- {bool_hybrid_array-9.10.18 → bool_hybrid_array-9.11.7}/bool_hybrid_array//347/247/230/345/257/206.md" +0 -0
- {bool_hybrid_array-9.10.18 → bool_hybrid_array-9.11.7}/bool_hybrid_array.egg-info/SOURCES.txt +0 -0
- {bool_hybrid_array-9.10.18 → bool_hybrid_array-9.11.7}/bool_hybrid_array.egg-info/dependency_links.txt +0 -0
- {bool_hybrid_array-9.10.18 → bool_hybrid_array-9.11.7}/bool_hybrid_array.egg-info/top_level.txt +0 -0
- {bool_hybrid_array-9.10.18 → bool_hybrid_array-9.11.7}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bool-hybrid-array
|
|
3
|
-
Version: 9.
|
|
3
|
+
Version: 9.11.7
|
|
4
4
|
Summary: 一个高效的布尔数组(密集+稀疏混合存储,节省内存)
|
|
5
5
|
Home-page: https://github.com/BKsell/bool-hybrid-array
|
|
6
6
|
Author: 蔡靖杰
|
|
@@ -17,6 +17,9 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
22
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
20
23
|
Classifier: License :: OSI Approved :: MIT License
|
|
21
24
|
Classifier: Operating System :: OS Independent
|
|
22
25
|
Requires-Python: >=3.8
|
|
@@ -24,6 +27,8 @@ Description-Content-Type: text/markdown
|
|
|
24
27
|
License-File: LICENSE
|
|
25
28
|
Requires-Dist: numpy>=1.19.0
|
|
26
29
|
Provides-Extra: int-array
|
|
30
|
+
Provides-Extra: numba-opt
|
|
31
|
+
Requires-Dist: numba>=0.55.0; extra == "numba-opt"
|
|
27
32
|
Dynamic: author
|
|
28
33
|
Dynamic: author-email
|
|
29
34
|
Dynamic: classifier
|
|
@@ -40,10 +45,17 @@ Dynamic: summary
|
|
|
40
45
|
|
|
41
46
|
# BoolHybridArray:高效的布尔混合数组库
|
|
42
47
|
|
|
48
|
+
<!-- 月下载量(核心推荐)+ 周下载量 + 总下载量 -->
|
|
49
|
+
[](https://pepy.tech/project/bool-hybrid-array)
|
|
50
|
+
[](https://pepy.tech/project/bool-hybrid-array)
|
|
51
|
+
[](https://pepy.tech/project/bool-hybrid-array)
|
|
52
|
+
|
|
43
53
|
一个专为布尔值优化的数组类,能够根据数据特征自动在密集存储和稀疏存储模式间切换,兼顾性能和内存效率。
|
|
44
54
|
|
|
45
55
|
## ***注:大版本号更新并非不兼容更新,而是重大更新***
|
|
46
56
|
|
|
57
|
+
注:当API完全稳定时就会发布版本规则较严谨的new-1.0.0版本,预期为10.x版本结束后
|
|
58
|
+
|
|
47
59
|
***注意:目前社区中若存在名称类似(如包含 “bool-hybrid-array”+ 后缀、boolean\_array、validate.io-boolean-array)的库,均与本项目(bool-hybrid-array)无关联,本项目的所有功能设计、代码实现均为独立开发;***
|
|
48
60
|
***其他平台里的类似名库绝不是我的库***
|
|
49
61
|
|
|
@@ -141,7 +153,7 @@ big_arr = BoolHybridArr([i % 100 == 0 for i in range(10000)])
|
|
|
141
153
|
|
|
142
154
|
# 查看存储模式(此时应为稀疏模式)
|
|
143
155
|
|
|
144
|
-
print(repr(big_arr)) # 输出: BoolHybridArray(split_index=100,size=10000,is_sparse=True,small_len=
|
|
156
|
+
print(repr(big_arr)) # 输出: BoolHybridArray(split_index=100, size=10000, is_sparse=True, small_len=101, large_len=98)
|
|
145
157
|
|
|
146
158
|
# 自动优化存储
|
|
147
159
|
|
|
@@ -411,6 +423,27 @@ try:
|
|
|
411
423
|
except OverflowError as e:
|
|
412
424
|
print(f"\n❌ NumPy存储失败:{e}")
|
|
413
425
|
|
|
426
|
+
#BHA_Queue(9.11.5版本新增)
|
|
427
|
+
|
|
428
|
+
q = BHA_Queue([T, F, T, T, F])
|
|
429
|
+
|
|
430
|
+
print(f"初始化队列: {q}") # 输出:BHA_Queue([T,F,T,T,F])
|
|
431
|
+
|
|
432
|
+
q.enqueue(T)
|
|
433
|
+
|
|
434
|
+
q.enqueue(F)
|
|
435
|
+
|
|
436
|
+
print(f"入队2个元素后: {q}") # 输出:BHA_Queue([T,F,T,T,F,T,F])
|
|
437
|
+
|
|
438
|
+
# 3. 出队(dequeue,均摊O(1),仅首次触发转移)
|
|
439
|
+
|
|
440
|
+
print(f"第一次出队: {q.dequeue()}") # 输出:T(触发 self.a → self.b 转移,仅1次)
|
|
441
|
+
|
|
442
|
+
print(f"第二次出队: {q.dequeue()}") # 输出:F(直接从 self.b 弹出,纯O(1))
|
|
443
|
+
|
|
444
|
+
print(f"出队2个元素后: {q}") # 输出:BHA_Queue([T,T,F,T,F])
|
|
445
|
+
|
|
446
|
+
|
|
414
447
|
```
|
|
415
448
|
|
|
416
449
|
## 性能优势
|
|
@@ -424,7 +457,7 @@ except OverflowError as e:
|
|
|
424
457
|
|
|
425
458
|
## 版本历史
|
|
426
459
|
|
|
427
|
-
|
|
460
|
+
- **7.8.13**:PyPI上的初始版本,支持基本功能和自动存储优化
|
|
428
461
|
* **7.9.0**:添加TruesArray和FalsesArray
|
|
429
462
|
* **7.9.1**:修复介绍的bug,增加copy功能
|
|
430
463
|
* **7.9.2**:新增find()方法
|
|
@@ -466,7 +499,7 @@ except OverflowError as e:
|
|
|
466
499
|
* **7.14.4**:修复in的错误×3
|
|
467
500
|
* **7.14.5**:修复in的错误×4
|
|
468
501
|
* **7.14.6**:优化arr.large的类型
|
|
469
|
-
|
|
502
|
+
- **8.0.0**:兼容numpy数组
|
|
470
503
|
* **8.0.1**:修复8.0.0兼容numpy数组时没有形状参数的问题
|
|
471
504
|
* **8.0.2**:移除bool_hybrid_dtype,改用object
|
|
472
505
|
* **8.1.0**:利用ctypes加速密集部分的一些方法
|
|
@@ -478,7 +511,7 @@ except OverflowError as e:
|
|
|
478
511
|
* **8.2.0**:支持哈希
|
|
479
512
|
* **8.2.1**:修复8.2.0版本中的NameError
|
|
480
513
|
* **8.2.2**:修复8.2.1版本中的IndexError
|
|
481
|
-
|
|
514
|
+
- **9.0.0**:详情见上
|
|
482
515
|
* **9.0.1**:小更新,优化optimize方法
|
|
483
516
|
* **9.1.0**:新增二维数组的optimize与memory\_usage,优化二维数组的位运算,给BHA\_Bool新增__rand__、**ror**、__rxor__等等
|
|
484
517
|
* **9.1.1**:修复9.1.0版本中的TypeError: unsupported operand type(s) for +: 'int' and 'method'错误
|
|
@@ -564,6 +597,23 @@ except OverflowError as e:
|
|
|
564
597
|
* **9.10.16**:新增Python 3.14时的jit优化加速
|
|
565
598
|
* **9.10.17**:给保护字典添加__import__方法,支持from导入
|
|
566
599
|
* **9.10.18**:新增BoolHybridArray的序列化和反序列化支持
|
|
600
|
+
* **9.10.18.post1**:修复TypeError: cannot pickle 'itertools._tee' object错误
|
|
601
|
+
* **9.10.18.post2**:尝试修复“满屏错误”的问题
|
|
602
|
+
* **9.10.18.post3**:尝试修复“满屏错误”的问题×2
|
|
603
|
+
* **9.10.18.post4**:尝试修复“满屏错误”的问题×3
|
|
604
|
+
* **9.10.19**:和9.10.18.post4相同,正式版本发布
|
|
605
|
+
* **9.10.20**:优化性能,增加BHA_jit_log日志
|
|
606
|
+
* **9.10.21**:优化Ask_BHA,移除BHA_jit_log日志
|
|
607
|
+
* **9.10.22**:进一步优化Ask_BHA的性能
|
|
608
|
+
* **9.11.0**:新增对7.3.10以上版本的PyPy解释器的支持
|
|
609
|
+
* **9.11.1**:修复PyPy解释器下的保护机制过度保护bug
|
|
610
|
+
* **9.11.2**:尝试修复IntHybridArray索引修改的错误
|
|
611
|
+
* **9.11.3**:修复NameError: name 'lst' is not defined. Did you mean: 'list'?错误
|
|
612
|
+
* **9.11.4**:修复TypeError: __dict__ must be set to a dictionary, not a 'IntHybridArray'的错误
|
|
613
|
+
* **9.11.5**:新增BHA_Queue双栈实现队列
|
|
614
|
+
* **9.11.6**:修复从9.11.3版本开始cpython用户无法安装bool-hybrid-array包的问题
|
|
615
|
+
* **9.11.7**:修复TypeError: 'map' object is not reversible的错误
|
|
616
|
+
|
|
567
617
|
|
|
568
618
|
|
|
569
619
|
|
|
@@ -579,7 +629,11 @@ except OverflowError as e:
|
|
|
579
629
|
* A:BoolHybridArray是本库中的**核心类**,所有函数都是围绕他进行的,但需要`split_index`,`size`,`is_sparse`;
|
|
580
630
|
BoolHybridArr是一个**函数**,用于把一个可迭代对象转为`BoolHybridArray`类
|
|
581
631
|
* Q:为什么不建议把太大的本类型数组打印?
|
|
582
|
-
* A
|
|
632
|
+
* A:虽然BoolHybridArray类型数组省内存,但字符串不省内存,一个`True`要4字节,一个`False`要5字节,连逗号都要占1字节(`numpy.ndarray`:我都比字符串省内存)
|
|
633
|
+
- Q:为什么使用在Windows终端使用PyPy时建议先调用`chcp 65001`再启动PyPy?
|
|
634
|
+
* A:因为本库有很多的的中文报错和打印,项目里也可能会有。Windows终端里的PyPy默认是GBK编码,有中文时会乱码。chcp 65001可以切换到UTF-8编码,防止乱码。
|
|
635
|
+
|
|
636
|
+
|
|
583
637
|
|
|
584
638
|
## 源代码和原理
|
|
585
639
|
|